在大部分的操作系统中,为了更好的实现人机交互,windows以及linux中均为提供一系列的对话框来完成特定场景下的功能,诸如字体大小选择,字体颜色选择等等。PyQt5中定义了一些列的标准对话框的类,让使用者能够方便和快捷的通过各个类完成字体大小、颜色,以及文件的选择.

QFontDialog

#-*- coding:utf-8 -*-
'''
QFontDialog
'''
__author__ = 'Tony Zhu'

from PyQt5.QtWidgets import QApplication, QDialog,QWidget, QFontDialog, QPushButton, QLineEdit, QGridLayout
import sys
import os


class FontDialog(QDialog):
    def __init__(self):
        super(FontDialog,self).__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("QFontDialog")
        self.setGeometry(400,400,300,260)

        self.fontButton = QPushButton("字体选择对话框")
        self.fontLineEdit = QLineEdit("Hello Python")
        self.fontButton.clicked.connect(self.openFont)

        self.mainLayout = QGridLayout()
        self.mainLayout.addWidget(self.fontButton,0,0)
        self.mainLayout.addWidget(self.fontLineEdit,0,1)

        self.setLayout(self.mainLayout)

    def openFont(self):
         font,ok=QFontDialog.getFont()  
         if ok:
            self.fontLineEdit.setFont(font) 


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = FontDialog()
    ex.show()
    sys.exit(app.exec_()) 

运行之后的效果:
这里写图片描述
这里写图片描述
控件说明:

控件类型控件名称作用
QPushButtonfontButton打开字体选择对话框
QLineEditfontLineEdit显示设定字体类型的效果

示例说明:
通过字体选择对话框选择对应的字体,并且选择的字体效果设定在QLineEdit中显示的文本上。
代码分析:
L21~23:

        self.fontButton = QPushButton("字体选择对话框")
        self.fontLineEdit = QLineEdit("Hello Python")
        self.fontButton.clicked.connect(self.openFont)

实例化fontButton 和fontLineEdit 对象,并将fontButton的clicked信号和槽函数openFont()绑定在一起。

L25~27:

self.mainLayout = QGridLayout()
        self.mainLayout.addWidget(self.fontButton,0,0)
        self.mainLayout.addWidget(self.fontLineEdit,0,1)

实例化网格布局,并将fontButton和fontLineEdit按照对应的位置添加到网格布局中。

L31~34:

    def openFont(self):
         font,ok=QFontDialog.getFont()  
         if ok:
            self.fontLineEdit.setFont(font) 

自定义的槽函数,选择所需的字体,并将字体的效果设定到fontLineEdit中。getFont()方法返回的为元组类型,同时返回选择的字体和函数执行的状态。

 |  getFont(...)
 |      QFontDialog.getFont(QFont, QWidget parent=None, str caption=QString(), QFontDialog.FontDialogOptions options=0) -> (QFont, bool)
 |      QFontDialog.getFont(QWidget parent=None) -> (QFont, bool)

getFont()方法有两个重载的实现,对应如上所需的参数不同,在上面的示例中,我们采用的是第二个实现。

QFontDialog.getFont(QFont, QWidget parent=None, str caption=QString(), QFontDialog.FontDialogOptions options=0) -> (QFont, bool)

第1个参数parent,用于指定父组件;

第2个参数caption,是QFileDialog对话框的标题;

第3个参数options,是对话框的一些参数设定,它的取值是 QFontDialog.FontDialogOptions ,每个选项可以使用 | 运算组合起来。

返回值为(QFont,bool),即返回值类型为tuple(元组)。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐