PyQt5 QFontDialog(字体选择对话框) 学习

2020-04-04  本文已影响0人  _Mirage

QFontDialog is a dialog widget for selecting a font.
这里面要注意的就是组件的setSizePolicy方法,作用是控制组件在布局容器中的大小变化。

代码:

# coding='utf-8'

from PyQt5.QtWidgets import QWidget, QApplication,\
    QFontDialog, QLabel, QVBoxLayout, QPushButton,\
    QSizePolicy
import sys


class Gui(QWidget):
    def __init__(self):
        super().__init__()
        self.start()

    def start(self):
        # 创建垂直方向控件布局器\
        # 可以使里面放置的控件呈现水平方向的整齐布局
        vbox = QVBoxLayout()
        # 创建内容是Dialog,父组件是QWidget(主窗体)的按钮
        button1 = QPushButton('Dialog', self)
        button1.move(20, 20)
        # button的setSizePolicy构造函数:
        """
        setSizePolicy(self, QSizePolicy)
        setSizePolicy(self, QSizePolicy.Policy,\
                    QSizePolicy.Policy)
        """
        # setSizePolicy: 设置控件在布局(layout)里面的大小变化
        button1.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        button1.clicked.connect(self.show_dialog)
        # 把按钮加入vbox的垂直布局中
        vbox.addWidget(button1)

        # 创建内容是Knowledge only matters,父组件是QWidget的标签
        self.label = QLabel('Knowledge only matters', self)
        self.label.move(130, 20)

        vbox.addWidget(self.label)
        # 将QWidget的布局设置成前面创建的vbox,必须要有这句vbox才能生效
        self.setLayout(vbox)

        self.setGeometry(300, 300, 250, 180)
        self.setWindowTitle('字体选择对话框')
        self.show()

    def show_dialog(self):
        font, flag = QFontDialog.getFont()
        if flag:
            self.label.setFont(font)


app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())

运行结果: image.png
image.png
image.png
上一篇下一篇

猜你喜欢

热点阅读