060.PyQt5_QFontDialog_字体选择对话框

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>的元组
      # (, True)
      # (, 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_())

你可能感兴趣的:(PyQt5,pyqt5,python,gui,python,pyqt,qt)