8.2 QFontDialog字体选择对话框

一、QFontDialog字体选择对话框

1.基本概念

  • QFontDialog的学习过程中重点要注意构造方法、选项控制和静态方法的使用。

2.代码

点击查看代码
from PyQt5.Qt import *
import sys


class Window(QWidget) :
    def __init__(self) :
        super().__init__()
        self.setWindowTitle("QFontDialog字体选择对话框 - PyQt5中文网")
        self.resize(600, 500)
        self.func_list()

    def func_list(self) :
        self.func()

    def func(self) :
        # 1.构造方法
        # 第一种构造方法
        font = QFont()
        font.setFamily('打不倒的小怪兽') #设置默认字体
        font.setPointSize(22)#设置默认大小
        #qd = QFontDialog(font, self)

        # 第二种构造方法
        # 设置当前字体 == 设置默认字体
        qd = QFontDialog(self) #直接创建
        qd.setCurrentFont(font)  # 在没有点击OK之前,当前字体可以是默认字体,也可以是选择的字体。点击之后就变为最终选择字体
        #qd.show()  #调用上面创建的方法

        ## 3案例:点击按钮,进行选择字体
        btn = QPushButton(self)
        btn.move(100, 100)
        btn.setText('选择字体')
        btn.clicked.connect(lambda : qd.open())

        # 槽函数:打印最终选择字体
        def font_sel() :
            print(qd.selectedFont().family())
            pass
        # 信号连接槽函数
        btn.clicked.connect(lambda : qd.open(font_sel))

        '''
        # 4可用信号
        # qd.currentFontChanged()  # 字体发生改变
        # qd.fontSelected()  # 最终选择的字体
        
        # 选项控制
        # qd.setOption()  # 设置单个选项
        # qd.setOptions()  # 设置多个选项
        # qd.testOption()  # 测试选项是否生效
        # qd.options()  # 获得当前选项
        
        # 枚举值
        # QFontDialog.NoButtons  # 不现实OK和取消按钮
        # QFontDialog.DontUseNativeDialog  # 在Mac上使用Qt的标准字体对话框
        # QFontDialog.ScalableFonts  # 显示可缩放字体
        # QFontDialog.NonScalableFonts  # 显示不可缩放字体
        # QFontDialog.MonospacedFonts  # 显示等宽字体
        # QFontDialog.ProportionalFonts  # 显示比例字体
        '''
        #4测试
        #qd.setOption(QFontDialog.NoButtons,on=False)
        #qd.setOptions(QFontDialog.NoButtons|QFontDialog.ScalableFonts)

        ## 5案列:信号控制字体变化
        label = QLabel(self)
        label.move(150, 150)
        label.setText('python')

        def font_con(font):
            label.setFont(font)
            label.adjustSize() #调整字体
        qd.currentFontChanged.connect(font_con)




        # # 5-1静态方法
        label2 = QLabel(self)
        label2.move(300, 150)
        label2.setText('PyQt5中文网')

        def font_con2():
            # res = QFontDialog.getFont(self)  # 返回一个对象和一个布尔结果元祖
            res = QFontDialog.getFont(font, self, '对话框标题')  # 返回一个对象和一个布尔结果元祖(设置子标题)
            if res[1]:#点击ok
                label2.setFont(res[0]) #设置字体
                label2.adjustSize()
        btn.clicked.connect(font_con2)

       



if __name__ == '__main__' :
    app = QApplication(sys.argv)
    window = Window()

    window.show()
    sys.exit(app.exec_())
## 3.效果 ![](https://img2022.cnblogs.com/blog/2520904/202204/2520904-20220413093251131-1470776820.gif)
posted @   Trouvaille_fighting  阅读(218)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示

目录导航