快速入门#
新接触 Qt?请查看本页末尾的常见问题解答部分。如果您拥有 Qt 许可证,请参阅本页末尾关于《商业使用》的相关信息。
注意
如果在您的系统中通过执行 pip install
安装 Qt,则安装 Qt 不会干扰 PySide6 的安装,因为 Python 包(轮)已包含 Qt 二进制文件。值得注意的是,系统样式插件将对 PySide 应用程序没有任何影响。
需求#
在您安装 Python for Qt 之前,您必须首先安装以下软件
Python 3.7+,
我们强烈建议您使用虚拟环境,例如 venv 或 virtualenv,并避免通过
pip
在您的系统中安装 PySide6。
注意
对于 Windows 用户,请使用来自 https://pythonlang.cn/downloads/ 的解释器,而不是来自 Microsoft Store 的解释器。
安装#
注意
有关商业安装,请参阅 商业使用。
创建和激活环境 您可以通过在终端上运行以下命令来完成此操作
创建环境(您的 Python 可执行文件可能被称为
python3
)python -m venv env
激活环境(Linux 和 macOS)
source env/bin/activate
激活环境(Windows)
env\Scripts\activate.bat
查看此动画,了解如何操作
安装 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
注意
从 6.4.3 版本开始,PySide6 可以在 conda 环境内部使用,但您对
qt.conf
文件的任何手动更改将被忽略。如果您想为 Qt 配置设置自定义值,请将这些值设置为qt6.conf
文件中。有关 qt.conf 的更多信息。
测试您的安装
现在您已安装了 Python for Qt,可以通过运行以下 Python 结构来测试您的设置并打印版本信息
import PySide6.QtCore # Prints PySide6 version print(PySide6.__version__) # Prints the Qt version used to compile PySide6 print(PySide6.QtCore.__version__)
注意
有关包含在 pyside6
包中的信息的更多信息,请查看包详细信息。
创建一个简单的 Qt Widgets 应用程序#
您的 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
并显示它。if __name__ == "__main__": app = QtWidgets.QApplication([]) widget = MyWidget() widget.resize(800, 600) widget.show() sys.exit(app.exec())
通过编写以下命令运行您的示例:python hello_world.py。
尝试单击底部的按钮以查看您获得的问候语。
创建一个简单的 Quick 应用程序#
使用 Qt Quick 执行相同的操作
导入
创建一个名为
hello_world_quick.py
的新文件,并向其中添加以下导入。import sys from PySide6.QtGui import QGuiApplication from PySide6.QtQml import QQmlApplicationEngine
声明性 UI
UI 可以使用 QML 语言来描述(分配给 Python 变量)
QML = """ 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() } } } """
注意
请注意,理想情况下,此内容应放入
qml
文件中,但为了简单起见,我们正在使用字符串变量。应用程序执行
现在,在主函数中实例化一个 QQmlApplicationEngine 并加载 QML
if __name__ == "__main__": app = QGuiApplication(sys.argv) engine = QQmlApplicationEngine() engine.loadData(QML.encode('utf-8')) if not engine.rootObjects(): sys.exit(-1) exit_code = app.exec() del engine sys.exit(exit_code)
注意
这是一个简化的示例。通常,QML 代码应位于单独的
.qml
文件中,可以使用设计工具进行编辑。
常见问题#
在此可以找到一些常见问题和情况,这些问题和情况可以澄清您在开始编程之前的问题。