我們上一章學習了QComboBox的用法,這一章我們來看一下它的一個比較常用的子類:QFontComboBox()。
一.描述:
QFontComboBox()是QComboBox()的一個子類,但是它的內容是不能被編輯的,主要是用來選擇字體。
二.功能作用
1.設置和獲取當前的字體
QFontComboBox.setCurrentFont(self, f: QtGui.QFont) #設置字體 QFontComboBox.currentFont() #獲取字體——>QFont
注意的是當前顯示的字體都是宋體的,即便選擇了別的字體在文本框里顯示效果都是宋體。
2.設置字體過濾器
由於控件提供能夠選擇的字體種類太多,我們可以用過濾器來過濾控件的提供選項
QFontComboBox.setFontFilters(self, filters: typing.Union['QFontComboBox.FontFilters', 'QFontComboBox.FontFilter']) #type: 'QFontComboBox.FontFilter' AllFonts = ... #所有字體 ScalableFonts = ... # 可縮放 NonScalableFonts = ... # 不可縮放 MonospacedFonts = ... # 等寬字體 ProportionalFonts = ... # 比例字體
三.信號
除了繼承的父類信號外,QFontComboBox()還有另外一個信號
QFontComboBox.currentFontChanged(self, f: QtGui.QFont)
信號還傳遞了選擇的字體作為參數。我們可以這樣使用

from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self): super().__init__() self.UI_test() def UI_test(self): fcb = QFontComboBox(self) fcb.resize(200,30) fcb.setEditable(False) #一般情況字體選擇控件是不能夠被編輯的 self.resize(500,300) self.fcb = fcb self.label = QLabel(self) self.label.move(100,100) self.label.setText('hello,你是誰?') fcb.currentFontChanged.connect(self.font_change) def font_change(self,font): self.label.setFont(font) self.fcb.setFont(font) pass if __name__ == '__main__': app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())
出來就是這個效果
通過選擇字體,改變了字體選擇框和label里的字體。