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

Qt5 Python GUI 编程指南

向 List 部件中添加项

尽管你可以手动通过Property Editor向List部件中添加选项,但有时候你需要通过代码动态的向List部件中添加选项。让我们创建一个应用程序来解释这个向List部件中添加选项的过程。

在这个应用程序中,你将使用Label、Line Edit、Push Button和List Widget。初始时,List部件的选项是空的,并将提示用户在Line Edit中输入期望的食物选项并单击Add to List按钮。输入的食物选项就会被添加到List部件中。所有后续的食物都被依次添加在上一条选项的下方。

如何去做...

通过执行以下步骤来了解这些选项是如何被添加到List部件中的:

  1. 我们开始基于Dialog without Buttons模板新建一个应用程序并拖动Label、Line Edit、Push Button和List Widget放到窗体上。

  2. 将Label和Push Button部件的text属性分别设置为Your favourite food item 和 Add to List。

  3. 将Line Edit的 objectName 的属性设置为 lineEditFoodItem,将Push Button的 objectName属性设置为pushButtonAdd,再将List部件的objectName属性设置为listWidgetSelectedItems。

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

    

    通过执行pyuic5工具,将xml文件demoListWidget3.ui会被转换成Python代码文件demoListWidget3.py。生成的Python文件demoListWidget3.py可以在本书的源码中找到。

  1. 创建一个名为callListWidget3.pyw的Python脚本文件,导入demoListWidget3.py的Python代码以调用用户界面设计并通过用户将Line Edit部件中输入的食物选项添加到List部件中。callListWidget3.pyw中的Python代码如下所示:

import sys
from PyQt5.QtWidgets import QDialog, QApplication
from demoListWidget3 import *
class MyForm(QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.pushButtonAdd.clicked.connect(self.addlist)
        self.show()
    def addlist(self):
        self.ui.listWidgetSelectedItems.addItem(self.ui.
        lineEditFoodItem.text())
        self.ui.lineEditFoodItem.setText('')
        self.ui.lineEditFoodItem.setFocus()
if __name__=="__main__":
    app = QApplication(sys.argv)
    w = MyForm()
    w.show()
    sys.exit(app.exec_())

 

它是如何工作的...

Push Button 的 clicked() 事件与 addList 函数相关联。因此,在Line Edit部件中输入文本就会被添加到List部件中,当用户选择Add to List按钮时,addList函数就会被调用。这个addList函数会获取到Line Edit中输入的文本并将其添加到List部件中。然后清除Line Edit部件中的文本,并设置Line Edit部件焦点,再将用户输入不同的文本。

在下面的截图中,你可以看到用户在Line Edit部件中输入的文本,这个文本将由用户通过选择Add to List按钮添加到List部件中: