Qt5 Python GUI 编程指南
创建时间:2018-12-10  访问量:5038  7  0

Qt5 Python GUI 编程指南

字体对话框的使用

本节,我们将学习使用字体对话框为选中的文本设置不同的字体和样式。

在本应用中,我们将使用一个Text Edit组件和一个Push Button 组件。当单击这个按钮时,将打开这个字体对话框架。从对话框中选择的字体和样式将被应用在Text Edit组件中的文本上。

本节,我们将使用QFontDialog类显示一个对话框组件,用于选择字体。

如何去做...

让我们基于Dialog without Buttons模板创建一个应用程序,步骤如下:

1、拖动一个Push Button和一个Text Edit组件放在窗体上。

2、将Push Button组件的文本属性设置为Choose Font。

3、将Push Button组件的objectName属性设置为pushButtonFont。

4、将应用保存为demoFontDialog.ui。

5、执行以上步骤后,应用界面的显示如下图所示:

用户界面是使用Qt Designer创建并保存为.ui格式的XML文件。使用pyuic5命令将这个XML文件转换为Python代码。生成的Python脚本文件名为demoFontDialog.py,可以参考本书源代码。这个demoFontDialog.py脚本将用于另一个Python文件的头文件导入,并调用显示用户界面。

6、创建另一个名为callFontDialog.pyw的Python文件,并导入demoFontDialog.py代码:

import sys
from PyQt5.QtWidgets import QDialog, QApplication, QFontDialog
from demoFontDialog import * 
class MyForm(QDialog):
  def __init__(self):
    super().__init__()
    self.ui = Ui_Dialog()
    self.ui.setupUi(self)
    self.ui.pushPuttonFont.clicked.connect(self.changefont)
    self.show()
  def changefont(self):
    font, ok = QFontDialog.getFont()
    if ok:
     self.ui.textEdit.setFont(font)
if __name__=="__main__":
  app = QApplication(sys.argv)
  w = MyForm()
  w.show()
  sys.exit(app.exec_())

它是如何工作的...

在callFontDialog.pyw文件中,你可以看到按钮的click()事件与changefont()方法关联;也就是说,当用户单击了Choose Font按钮时,就用调用changefont()方法。changefont()方法又调用QFontDialog类中的getFont()方法,这个方法会打开一个对话框并显示不同的字体,字体样式,大小和效果。当选择了一个字体,字体样式,大小和效果后,文字效果就会在Sample框中显示出来。当选择了一个期望的字体、字体样式、大小和效果后,当用户单击OK按钮,当前选择的字体会赋值给font变量。因此,TextEdit类中的setFont()方法就会将选择的字体应用到Text Edit组件中显示的文本上。

运行应用,你看到了一个按钮,即Change Font 组件,和一个Text Edit组件,如下图所示:

为了看到从字体对话框中选择字体后的影响,你需要在Text Edit中输入一些文本,如下图所示:

当选择了Change Font按钮,将打开字体对话框,如下图所示。你就能在对话框的最左侧框中显示的不同的字体。中间的框显示了不同的字体样式,它可以使用你文本加粗、倾斜、加粗和倾斜和正常。最右边的框中显示了不同的大小。在对话框底部,你可以看到不同的选择框,可以使用你的文本显示下划线、删除线等样式。在任可框中选择相应的字体和样式都会在Sample框中预览相应的文字校果。选择好对应的字体、样式和大小后,单击OK按钮关闭对话框:

选择好字体样式后将在Text Edit组件的文本上看到相应的效果,如下图所示: