入门指南¶
在这里,您可以找到使用Qt提供的两种技术:Qt Widgets和Qt Quick来安装和创建简单应用程序的步骤。
需求¶
在安装 Qt for Python 之前,首先必须安装以下软件:
Official Python 3.8+
我们强烈推荐使用虚拟环境,例如 venv 或 virtualenv 并避免在系统中通过
pip
安装 PySide6。
安装¶
创建并激活环境 您可以通过在终端上运行以下命令来完成此操作:
创建环境(您的 Python 可执行文件可能被称为
python3
):python -m venv env
激活环境(Linux 和 macOS):
source env/bin/activate
激活环境(Windows):
env\Scripts\activate.bat
查看此动画以了解如何操作:
注意
如果通过
pip install
安装 PySide6,系统中安装的 Qt 不会干扰您的 PySide6 安装,因为 Python 包(wheels)已经包含了 Qt 二进制文件。最重要的是,系统中的样式插件不会对 PySide 应用程序产生任何影响。安装 PySide6
注意
对于商业安装,请参考 商业用途。
现在您已经准备好使用
pip
安装 Qt for Python 包。 在终端中运行以下命令:对于最新版本:
pip install pyside6
对于特定版本,如 6.4.1:
pip install pyside6==6.4.1
也可以从我们的服务器安装特定的快照。 为此,您可以使用以下命令:
pip install --index-url=https://download.qt.io/snapshots/ci/pyside/6.4/latest pyside6 --trusted-host download.qt.io
测试你的安装
现在你已经安装了 Qt for Python,通过运行以下 Python 代码来打印版本信息以测试你的设置:
import PySide6.QtCore # 打印 PySide6 版本 print(PySide6.__version__) # 打印用于编译 PySide6 的 Qt 版本 print(PySide6.QtCore.__version__)
注意
有关
pyside6
包中包含的更多信息,请查看 Package Details。
创建你的第一个Qt应用程序¶

Qt 提供了两种技术来构建用户界面:
Qt Widgets,一种自Qt诞生以来就存在的命令式编程和设计方法,使其成为UI应用程序的稳定可靠技术。
Qt Quick,一种声明式编程和设计方法,使您能够通过描述简单元素来创建流畅的用户界面。
这两种技术都提供了使用拖放工具来创建界面的可能性。pyside6-designer用于Qt Widgets(安装pyside6时包含),以及Qt Design Studio用于Qt Quick(在这里获取)。
注意
阅读完本页后,建议您查看 pyside6-project 工具,以了解如何自动创建项目 而无需手动编写所有代码。
使用Qt Widgets创建您的第一个Qt应用程序¶
您的 Qt for Python 设置已准备就绪。您可以通过开发一个简单的应用程序来进一步探索它,该应用程序可以打印 "Hello World"
的多种语言版本。以下说明将指导您完成开发过程:
导入
创建一个名为
hello_world.py
的新文件,并向其中添加以下导入:import sys import random from PySide6 import QtCore, QtWidgets, QtGui
PySide6 Python 模块提供了对 Qt API 的访问作为其子模块。 在这种情况下,您正在导入 QtCore、QtWidgets 和 QtGui 子模块。
主类
定义一个名为
MyWidget
的类,该类继承自 QWidget 并包含一个 QPushButton 和一个 QLabel:class MyWidget(QtWidgets.QWidget): def __init__(self): super().__init__() 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))
MyWidget
类有一个magic
成员函数,该函数从hello
列表中随机选择一个项目。当你点击按钮时,magic
函数会被调用。应用程序执行
现在,添加一个主函数,在其中实例化
MyWidget
并show
它:if __name__ == "__main__": app = QtWidgets.QApplication([]) widget = MyWidget() widget.resize(800, 600) widget.show() sys.exit(app.exec())
通过编写以下命令来运行你的示例:
python hello_world.py
尝试点击底部的按钮,看看你会得到什么样的问候。
使用Qt Quick创建您的第一个Qt应用程序¶
使用 Qt Quick 做同样的事情:
导入
创建一个名为
hello_world_quick.py
的新文件,并向其中添加以下导入:import sys from PySide6.QtGui import QGuiApplication from PySide6.QtQml import QQmlApplicationEngine
Declarative UI
The UI can be described in the QML language:
import QtQuick import QtQuick.Controls import QtQuick.Layouts Window { width: 300 height: 200 visible: true title: "Hello World" readonly property list<string> texts: ["Hallo Welt", "Hei maailma", "Hola Mundo", "Привет мир"] function setText() { var i = Math.round(Math.random() * 3) text.text = texts[i] } ColumnLayout { anchors.fill: parent Text { id: text text: "Hello World" Layout.alignment: Qt.AlignHCenter } Button { text: "Click me" Layout.alignment: Qt.AlignHCenter onClicked: setText() } } }
Put the this into a file named
Main.qml
into a directory namedExample
along with a file namedqmldir
to describe a basic QML module:module Example Main 254.0 Main.qml
应用程序执行
现在,添加一个主函数,在其中实例化一个 QQmlApplicationEngine 并加载 QML:
import sys from PySide6.QtGui import QGuiApplication from PySide6.QtQml import QQmlApplicationEngine if __name__ == "__main__": app = QGuiApplication(sys.argv) engine = QQmlApplicationEngine() engine.addImportPath(sys.path[0]) engine.loadFromModule("Example", "Main") if not engine.rootObjects(): sys.exit(-1) exit_code = app.exec() del engine sys.exit(exit_code)
通过编写以下命令来运行你的示例:
python main.py
尝试点击底部的按钮,看看你会得到什么样的问候。
下一步¶
常见问题¶
在这里,您可以找到一些常见问题和情况,这些问题将在您开始编程之前澄清疑问。
Qt, QML, Widgets… 有什么区别?
哪些IDE与PySide兼容?
什么是Shiboken?
PySide中的文件类型
将您的应用程序分发到其他系统和平台
作为一名Qt/C++开发者,为什么我应该考虑使用Qt for Python?