本页内容

教程:Qt Widgets 与 Python

首先,创建一个Qt for Python 应用程序项目。然后,编辑模板代码,开发一个使用 Qt Widgets 以多种语言显示“Hello World”文本的小型应用程序。

一个小型 Qt Widgets 应用程序

有关创建Qt for Python 应用程序的更多示例,请参阅《Qt for Python 示例与教程》

创建一个空窗口项目

要创建一个包含主类源文件的Qt for Python 应用程序:

  1. 转到“File ” > “New Project ”。
  2. 选择 Application (Qt for Python) >Empty Window >Choose ,以打开“Project Location ”对话框。

    “项目位置”对话框

  3. 在“Name ”中,输入项目名称。例如,hello_world
  4. 在“Create in ”中,输入项目文件的路径。例如,C:\Examples
  5. 选择“Next ”(Windows 和 Linux 系统)或“Continue ”(macOS 系统)以打开“Define Class ”对话框。

    “定义类”对话框

  6. 在“Class name ”中,将类名输入为MyWidget
  7. Base class 中,选择 QWidget 作为基类。

    注意:“ Source file ”字段 会自动更新,以匹配类名。

  8. 在“Project file ”中,输入项目文件的名称。
  9. 选择“Next ”或“Continue ”以打开“Define Project Details ”对话框。

    “定义项目详细信息”对话框

  10. 在“PySide version ”中,选择生成的代码的 PySide 版本。
  11. 选择“Next ”或“Continue ”以打开“Kit Selection ”对话框。

    为 Python 项目选择开发工具包

  12. 选择用于构建、部署和运行项目的 Python 工具包。默认情况下,这会在源代码目录内为项目创建一个虚拟环境。若要使用全局解释器,请选择与“Details ”中该工具包的 Python 名称相同的构建配置。
  13. 选择“Next ”或“Continue ”。
  14. 检查项目设置,并选择Finish (Windows 和 Linux 系统)或Done (macOS 系统)以创建项目。

向导将生成以下文件:

  • pyproject.toml,其中列出了 Python 项目中的文件及其他配置。
  • mywidget.py,其中包含类的一些模板代码。
  • requirements.txt,该文件存储了生成的代码对应的 PySide 版本。您可以使用此文件通过 pip 安装所需的 PySide 版本。

为项目安装 PySide6

在“Edit ”模式下,选择“Install ”为项目配置 PySide6。

提示安装 PySide6

添加Qt Widgets 导入语句

向导会将导入语句添加到mywidget.py 源文件中,以便访问QApplication 以及您在Qt Widgets 模块中选定的基类QWidget 。此外,您还需要导入randomQtCore 以随机选择显示文本的语言,并导入QtWidgets 以添加UI元素:

import sys
import random
from PySide6.QtWidgets import QApplication, QWidget
from PySide6 import QtCore, QtWidgets

添加基于小部件的用户界面

向导会添加一个名称为指定名称的主类,该类继承自指定的基类:

class MyWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        ...

添加按钮、标签和布局控件以创建 UI 元素:

...
self.hello = ["Hallo Welt", "Hei maailma", "Hola Mundo", "Привет мир"]

self.button = QtWidgets.QPushButton("Click me!")
self.text = QtWidgets.QLabel("Hello World",
                             alignment=QtCore.Qt.AlignCenter)

self.layout = QtWidgets.QVBoxLayout(self)
self.layout.addWidget(self.text)
self.layout.addWidget(self.button)
...

添加信号和槽

然后,添加一个信号和一个槽来实现随机功能:

    ...
    self.button.clicked.connect(self.magic)

@QtCore.Slot()
def magic(self):
    self.text.setText(random.choice(self.hello))

添加 main 函数

向导会添加一个主函数,并在其中创建一个QApplication 实例。由于Qt可以接收来自命令行的参数,因此您可以向QApplication 对象传递任意参数。通常情况下,您无需传递任何参数,并可采用以下方法:

if __name__ == "__main__":
    app = QApplication(sys.argv)
    ...

实例化 MainWindow 类

向导会实例化MainWindow 类并将其显示出来:

...
widget = MyWidget()
widget.show()
...

执行 Qt 代码

最后,向导调用app.exec() 方法,进入Qt主循环并开始执行Qt代码:

...
sys.exit(app.exec())

运行应用程序

选择““运行”按钮 ”(Run )以运行应用程序。

另请参阅 《教程:Qt Quick 与Python》《教程:Qt Widgets UI与Python》以及《开发Qt for Python 应用程序》。

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.