我们上一章学习了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里的字体。