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

Qt5 Python GUI 编程指南

使用 Font Combo Box 部件

字体组合框(Font Combo Box)部件,从名称当中可以猜出,它会显示一个字体类型列表供选择。如果需要的话,那么已选中的字体类型将会被用于期望的内容中。

准备

为了理解Font Combo Box部件的工作原理,让我们创建一个示例。这个示例将显示一个Font Combo Box和一个Text Edit部件。用户将会在Text Edit部件中输入期望的内容。在Text Edit部件中输入完文本之后,当用户从Font Combo Box中选择任一个字体类型时,这个选择的字体将会被用于Text Edit部件中输入的内容上。

如何去做...

这里的步骤是显示一个活动Font Combo Box部件,并将选中的字体应用于Text Edit部件中的文本内容:

  1. 基于Dialog without Buttons模板新建一个应用程序,并从Widget框中拖动2个Label部件,1个Font Combo Box部件和一个Text Edit部件放到窗体上。

  2. 将第1个Label的text属性设置为Select desired font,并将第2个Label部件的text属性设置为Type some text。

  3. 将应用保存为demoFontComboBox.ui。窗体如下截图所示:

    

    用户界面是使用Qt Designer创建的并存储在.ui的文件中,这是一个XML文件,并且需要将其转换成Python代码。转换成Python代码后,会生成一个demoFontComboBox.py文件,可以在本书源代码中找到。前面的代码将会作为头文件并导入到需要GUI的文件中,即任何需要访问此用户界面的Python脚本都需要导入前面的代码。

  1. 使用callFontComboBox.pyw名称创建另一个Python文件并导入demoFontComboBox.py代码。

import sys
from PyQt5.QtWidgets import QDialog, QApplication
from demoFontComboBox import *
class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        myFont=QtGui.QFont(self.ui.fontComboBox.itemText(self.ui.
        fontComboBox.currentIndex()),15)
        self.ui.textEdit.setFont(myFont)
        self.ui.fontComboBox.currentFontChanged.connect
        (self.changeFont)
        self.show()
    def changeFont(self):
        myFont=QtGui.QFont(self.ui.fontComboBox.itemText(self.ui.
        fontComboBox.currentIndex()),15)
        self.ui.textEdit.setFont(myFont)
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

 

它是如何工作的...

在这个callFontComboBox.pyw文件中,每当用户从Font Combo Box中选中任意一个字体类型时,就会产生currentFontChanged信号并且这个信号是与changeFont方法相关联的,因此,每当Font Combo Box中的任意一个字体类型被选中时,这个changeFont()方法就会被调用。

在changeFong()方法中,通过调用两个方法来访问选中的字体类型。第一个调用的方法是QFontComboBox类中的currentIndex()方法,它会获取选中字体类型的索引值。第二个调用的方法是itemText()方法,并将当前选中的字体类型的索引位置传递给这个方法来访问选中的字体类型。然后,这个被选中的字体类型就会被用于Text Edit部件中输入的文本内容上。

运行应用程序,你将看到一个Font Combo Box部件并显示了系统中可用的字体列表,如下截图所示: