QFontDialog 字体选择对话框
- 描述
- 提供了一种选择字体的对话框控件
- 继承自:QDialog
- 功能作用
- 构造函数
QFontDialog(parent: QWidget = None) # 创建对象的同时设置父对象 QFontDialog(QFont, parent: QWidget = None) # 创建对象的同时通过QFont对象设置默认字体格式并设置父对象
- 补充:QFont字体格式
setFontFamily(family_str) # 设置字体家族 fontFamily() # 获取设置的字体 setFontWeight(int) # 设置字体粗细(通过下面枚举) QFont.Thin # 细小 QFont.ExtraLight # 稍微加粗 QFont.Light QFont.Normal # 标准的 QFont.Medium # 中等 QFont.DemiBold # 半粗体 QFont.Bold # 粗体 QFont.ExtraBold # 特粗体 QFont.Black # 黑体 fontWeight() # 获取字体粗细 setFontItalic(bool) # 设置字体是否倾斜 fontItalic() # 获取字体是否倾斜 setFontPointSize(float) # 设置字体尺寸 fontPointSize() # 获取字体尺寸 setFontUnderline(bool) # 设置字体是否加下划线 fontUnderline() # 获取字体是否加下划线 setCurrentFont(QFont) # 通过QFont对象统一设置字体格式 currentFont() -> QFont # 获取设置的字体格式QFont对象 # QFont对象里面有很多方法可以设置字体格式,也可以通过字体格式选择框获取QFont对象 # 小技巧:弹出字体格式选择框 QFontDialog.getFont() # 查看可用的字体 # 返回一个QFont对象和选择结果<确定:True,取消:False>的元组 # (<PyQt5.QtGui.QFont object at 0x000001DE2F386890>, True) # (<PyQt5.QtGui.QFont object at 0x000001DE2F386890>, False)
- 打开对话框
show() open(self) open(PYQT_SLOT) # 打开后, 会自动连接fontSelected信号与此处指定的槽函数PYQT_SLOT # 选择字体后,点击确定按钮会执行指定的槽函数PYQT_SLOT,点击取消则不执行 exec() -> int # 返回是否点击确定
- 当前字体
setCurrentFont(QFont) # 设置当前选中字体 currentFont() -> QFont # 获取当前选中字体
- 最终选中字体
selectedFont() -> QFont # 获取最终选择的字体
- 选项控制
setOption(QFontDialog.FontDialogOption, on=True) # 参数:on:设置前面的参数是否有效 on = True # 设置该选项 on = False # 取消该选项 setOptions(QFontDialog.FontDialogOption) # 设置多个选项,用按位或("|")进行连接 testOption(QFontDialog.FontDialogOption) # 测试某个选项是否生效 options() -> QFontDialog.FontDialogOption # 获取当前的选项 # 补充 QFontDialog.FontDialogOption QFontDialog.NoButtons # 不显示“ 确定”和“ 取消”按钮。(对“实时对话框”有用。) QFontDialog.DontUseNativeDialog # 在Mac上使用Qt的标准字体对话框而不是Apple的原生字体面板。 QFontDialog.ScalableFonts # 显示可缩放字体 QFontDialog.NonScalableFonts # 显示不可缩放的字体 QFontDialog.MonospacedFonts # 显示等宽字体 QFontDialog.ProportionalFonts # 显示比例字体
- 静态方法弹出对话框
QFontDialog.getFont(parent: QWidget = None) -> Tuple[QFont, bool] QFontDialog.getFont(QFont, parent: QWidget = None, caption: str = '', options: QFontDialog.FontDialogOption) -> Tuple[QFont, bool] # 参数 QFont: 默认字体 parent. 父控件 caption. 对话框标题 options. 选项,同上 # 返回值 返回一个元组(QFont, bool) —— (最终选择的字体, 是否点击确定)
- 构造函数
- 可用信号
currentFontChanged(QFont) # 当前字体发生改变时 fontSelected(QFont) # 最终选择字体时
- 代码示例
- 示例1:QFontDialog-功能作用
from PyQt5.Qt import * import sys class Windows(QWidget): def __init__(self): super().__init__() self.setWindowTitle('QFontDialog-功能作用') self.resize(500, 500) self.widget_list() def widget_list(self): self.add_widget() def add_widget(self): # ****************构造函数****************** 开始 # 方法一 fontd = QFontDialog(self) # 方法二 font = QFont() font.setFamily('微软雅黑') # fontd = QFontDialog(font,self) # ****************构造函数****************** 结束 pass # ****************弹出窗口****************** 开始 # def font_selct(): # print('选择了字体') # fontd.open(font_selct) # fontd.open() # fontd.show() # fontd.exec() # ****************弹出窗口****************** 结束 pass # ****************设置当前字体****************** 开始 # fontd.setCurrentFont(font) # 设置当前字体 # # f = fontd.currentFont() # 获取当前字体 # ****************设置当前字体****************** 结束 pass # ****************最终选择的字体****************** 开始 # labe = QLabel(self) # labe.setText("我爱学Python") # labe.move(100,100) # # def font_select(): # fontd.open() # # btn = QPushButton('字体选择', self) # btn.move(10, 10) # btn.clicked.connect(font_select) # # def labe_setfont(): # labe.setFont(fontd.selectedFont()) # labe.adjustSize() # # fontd.fontSelected.connect(labe_setfont) # ****************最终选择的字体****************** 结束 pass # ****************选项控制****************** 开始 # QFontDialog.NoButtons # 不显示“ 确定”和“ 取消”按钮。(对“实时对话框”有用。) # QFontDialog.DontUseNativeDialog # 在Mac上使用Qt的标准字体对话框而不是Apple的原生字体面板。 # QFontDialog.ScalableFonts # 显示可缩放字体 # QFontDialog.NonScalableFonts # 显示不可缩放的字体 # QFontDialog.MonospacedFonts # 显示等宽字体 # QFontDialog.ProportionalFonts # 显示比例字体 # # 设置对话框选项 # fontd.setOption(QFontDialog.NoButtons,on=True) # # fontd.setOptions(QFontDialog.NoButtons | QFontDialog.ScalableFonts) # fontd.open() # # 获取设置的选项是否生效 # print(fontd.testOption(QFontDialog.NoButtons)) # # 获取当前的选项 # print(fontd.options()) # ****************选项控制****************** 结束 pass # ****************静态方法打开对话框****************** 开始 btn = QPushButton('选择字体',self) btn.move(10,10) labe = QLabel('我爱学Python', self) labe.move(0, 100) def open_font(): # 使用静态方法一打开字体选择对话框 # result = fontd.getFont() # 使用静态方法二打开字体选择对话框 result= fontd.getFont(font,self,'请选择字体') if result[1]: labe.setFont(result[0]) labe.adjustSize() btn.clicked.connect(open_font) # ****************静态方法打开对话框****************** 结束 if __name__ == '__main__': app = QApplication(sys.argv) window = Windows() window.show() sys.exit(app.exec_())
- 示例2:可用信号
from PyQt5.Qt import * import sys class Windows(QWidget): def __init__(self): super().__init__() self.setWindowTitle('QFontDialog-可用信号') self.resize(500, 500) self.widget_list() def widget_list(self): self.add_widget() def add_widget(self): fontd = QFontDialog(self) btn = QPushButton('选择字体',self) btn.move(10,10) labe = QLabel('我爱学Python', self) labe.move(10, 100) labe1 = QLabel('我爱学Java', self) labe1.move(10, 200) btn.clicked.connect(lambda:fontd.open()) def current_font(f): labe.setFont(f) labe.adjustSize() def select_font(f): labe1.setFont(f) labe1.adjustSize() # 当前字体发生改变时发射信号 fontd.currentFontChanged.connect(current_font) # 最终选择字体时发射信号 fontd.fontSelected.connect(select_font) if __name__ == '__main__': app = QApplication(sys.argv) window = Windows() window.show() sys.exit(app.exec_())