實戰PyQt5: 058-字型選擇對話方塊QFontDialog

seniorwizard發表於2020-11-20

QFontDialog簡介

QFontDialog控制元件是一個常用的字型選擇對話方塊,繼承自QDialog,是Qt內建的標準對話方塊之一。它可以讓使用者選擇所顯示的文字的字型型別,字號大小、樣式和格式。通過QFontDialog控制元件可以在介面中對文字的字型樣式進行精確設定。使用QFontDialog類的靜態方法getFont(),可以從字型選擇對話方塊中選擇文字的顯示字號大小樣式和格式。

QFontDialog常用方法有:

  • getFont(): 開啟字型對話方塊,如果點選確定按鈕,則返回True和選擇的字型;
  • currentFont(): 返回當前字型;
  • open(): 開啟對話方塊並將其fontSelected()訊號連線到接收器和指定的插槽。當對話方塊關閉時,訊號將從插槽斷開;
  • selectedFont(): 返回使用者通過單擊“確定”或等效按鈕時選擇的字型;
  • setCurrentFont(): 將給定的字型設定QFontDialog中突出顯示的字型;
  • setOption(): 如果引數on為True,則將給定選項設定為啟用,否則清除該給定選項;
  • setOptions(): 設定給定字型選項;
  • testOption(): 如果已啟用給定選項,則返回True,否則返回False;
  • options(): 返回FontDialogOptions型別的列舉值。

FontDialogOptions取值及含義:

  • NoButtons: 沒有按鈕,表示選擇所有字型;
  • DontUseNativeDialog: 不使用系統原生對話方塊;
  • ScalableFonts: 可縮放字型;
  • NonScalableFonts: 不可縮放字型;
  • MonospacedFonts: 等寬字型;
  • ProportionalFonts: 等比例字型。

QFontDialog常用訊號:

  • currentFontChanged: 當前字型樣式發生改變時發射該訊號;
  • fontSelected: 字型樣式最終被選擇時發射該訊號。

QFontDialog類繼承關係:

實戰PyQt5:058-字型選擇對話方塊QFontDialog

 

測試QFontDialog

建立檔案qfontdialog.py,通過字型選擇對話方塊選擇相應字型,將字型的效果顯示在一個QLabel標籤頁的文字上,完整程式碼如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel, 
                             QPushButton, QFontDialog, QVBoxLayout)
 
class DemoFontDialog(QWidget):
    def __init__(self, parent=None):
        super(DemoFontDialog, self).__init__(parent)       
        
        # 設定視窗標題
        self.setWindowTitle('實戰PyQt5: QFontDialog Demo!')      
        # 設定視窗大小
        self.resize(360, 240)
        
        self.initUi()
        
    def initUi(self):
        
        vLayout = QVBoxLayout(self)
        vLayout.addSpacing(10)
        
        btnTest = QPushButton('調整字型', self)
        btnTest.clicked.connect(self.onSetFont)
        
        self.label_text = QLabel('實戰PyQt5: \n測試QFontDialog')
        self.label_text.setAlignment(Qt.AlignCenter)
        self.label_text.setFont(QtGui.QFont(self.font().family(), 16))
        
        vLayout.addWidget(btnTest)
        vLayout.addWidget(self.label_text)
        
        self.setLayout(vLayout)
                
    def onSetFont(self):
        font,ok = QFontDialog.getFont()
        if ok:
            self.label_text.setFont(font)
        
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = DemoFontDialog()
    window.show()
    sys.exit(app.exec()) 

執行結果如下圖:

實戰PyQt5:058-字型選擇對話方塊QFontDialog

測試QFontDialog

本文知識點

  • 使用QFontDialog的getFont方法獲得字型;
  • 修改QLabel文字字型;
  • QLabel文字字型的對齊方式。

前一篇:  實戰PyQt5: 057-檔案對話方塊QFileDialog

相關文章