QFontDialog简介
QFontDialog控件是一个常用的字体选择对话框,继承自QDialog,是Qt内建的标准对话框之一。它可以让用户选择所显示的文本的字体类型,字号大小、样式和格式。通过QFontDialog控件可以在界面中对文本的字体样式进行精确设定。使用QFontDialog类的静态方法getFont(),可以从字体选择对话框中选择文本的显示字号大小样式和格式。
QFontDialog常用方法有:
- getFont(): 打开字体对话框,如果点击确定按钮,则返回True和选择的字体;
- currentFont(): 返回当前字体;
- open(): 打开对话框并将其fontSelected()信号连接到接收器和指定的插槽。当对话框关闭时,信号将从插槽断开;
- selectedFont(): 返回用户通过单击“确定”或等效按钮时选择的字体;
- setCurrentFont(): 将给定的字体设置QFontDialog中突出显示的字体;
- setOption(): 如果参数on为True,则将给定选项设置为启用,否则清除该给定选项;
- setOptions(): 设置给定字体选项;
- testOption(): 如果已启用给定选项,则返回True,否则返回False;
- options(): 返回FontDialogOptions类型的枚举值。
FontDialogOptions取值及含义:
- NoButtons: 没有按钮,表示选择所有字体;
- DontUseNativeDialog: 不使用系统原生对话框;
- ScalableFonts: 可缩放字体;
- NonScalableFonts: 不可缩放字体;
- MonospacedFonts: 等宽字体;
- ProportionalFonts: 等比例字体。
QFontDialog常用信号:
- currentFontChanged: 当前字体样式发生改变时发射该信号;
- fontSelected: 字体样式最终被选择时发射该信号。
QFontDialog类继承关系:
测试QFontDialog
创建文件qfontdialog.py,通过字体选择对话框选择相应字体,将字体的效果显示在一个QLabel标签页的文本上,完整代码如下:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import (QApplication, QWidget, QLabel,
QPushButton, QFontDialog, QVBoxLayout)
class DemoFontDialog(QWidget):
def __init__(self, parent=None):
super(DemoFontDialog, self).__init__(parent)
# 设置窗口标题
self.setWindowTitle('实战PyQt5: QFontDialog Demo!')
# 设置窗口大小
self.resize(360, 240)
self.initUi()
def initUi(self):
vLayout = QVBoxLayout(self)
vLayout.addSpacing(10)
btnTest = QPushButton('调整字体', self)
btnTest.clicked.connect(self.onSetFont)
self.label_text = QLabel('实战PyQt5: \n测试QFontDialog')
self.label_text.setAlignment(Qt.AlignCenter)
self.label_text.setFont(QtGui.QFont(self.font().family(), 16))
vLayout.addWidget(btnTest)
vLayout.addWidget(self.label_text)
self.setLayout(vLayout)
def onSetFont(self):
font,ok = QFontDialog.getFont()
if ok:
self.label_text.setFont(font)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = DemoFontDialog()
window.show()
sys.exit(app.exec())
运行结果如下图:
测试QFontDialog
本文知识点
- 使用QFontDialog的getFont方法获得字体;
- 修改QLabel文本字体;
- QLabel文字字体的对齐方式。