在统信UOS上开发PyQt/PySide应用需确保Python 3.9/3.10、GUI库、Designer及pyuic工具四者兼容;推荐PyQt5(APT安装)快速验证,PySide6(pip安装)适配ARM64与信创合规,PyQt6仅限x86_64;完成UI设计、编译为ui_main.py后,编写main.py即可运行。

在统信UOS上开发可实际运行的PyQt或PySide桌面图形应用,必须确保Python解释器、GUI绑定库、UI设计工具、代码生成器四者全部就位且版本兼容,缺一环就会卡在“import失败”“designer打不开”或“pyuic转换报错”环节。
确认并激活基础Python环境
打开终端,执行python3 --version,确认输出为Python 3.9或3.10;若提示“command not found”,立即运行sudo apt install python3补全解释器。
接着运行pip3 --version;若报错,执行sudo apt install python3-pip——【缺少pip3会导致后续所有包安装中断】。
最后验证系统是否识别pyuic5或pyside6-uic命令:输入which pyuic5和which pyside6-uic,任一有输出即说明对应工具链已预装或待补装。
按需选择PyQt5/PyQt6/PySide6安装路径
PyQt5适合快速验证传统Widgets项目,PySide6更适合新项目与信创合规交付——它采用LGPL v3协议,闭源分发无需公开源码,且对UOS ARM64架构支持更早落地。
方法一:APT安装PyQt5(推荐新手)
执行sudo apt install -y python3-pyqt5 python3-pyqt5.qtwebengine qttools5-dev-tools。其中qttools5-dev-tools含designer和pyuic5,不可省略。
方法二:pip安装PySide6(推荐ARM64或需LGPL合规场景)
先确认架构:uname -m应返回aarch64;再执行pip3 install PySide6 --pre --index-url https://pypi.org/simple/ --trusted-host pypi.org。该命令拉取官方测试版aarch64轮子,2025年Q4起6.7.2+版本已稳定适配UOS V20 SP2。
方法三:手动安装PyQt6(仅限x86_64平台)
UOS x86_64版可直接pip3 install PyQt6,但必须额外运行sudo apt install qt6-base-dev-tools以提供pyuic6命令——否则无法将.ui文件转为Python代码。
启动Qt Designer并保存首个UI文件
在终端中输入designer(PyQt5/PySide6共用)或qt6ct后选Designer(PyQt6),回车。
若弹出空白设计窗口,说明工具链正常;若提示“command not found”,请返回上一步重装qttools5-dev-tools或qt6-base-dev-tools。
点击菜单栏“File → New → Main Window”,拖入一个QPushButton和一个QLabel,双击按钮修改文字为“点我”,右键→“Change objectName”设为pushButton。
点击“File → Save As”,保存为main.ui,路径建议选在用户主目录下新建的myapp文件夹内,例如/home/user/myapp/main.ui。
将UI文件编译为Python模块
第一步:进入main.ui所在目录cd /home/user/myapp
第二步:根据所选框架执行对应命令
① PyQt5用户:运行pyuic5 main.ui -o ui_main.py;
② PySide6用户:运行pyside6-uic main.ui -o ui_main.py;
③ PyQt6用户:运行pyuic6 main.ui -o ui_main.py。
成功后当前目录将生成ui_main.py,其内容为纯Python类定义,不含任何业务逻辑,仅负责界面元素创建与布局绑定。
编写主程序并运行界面
在myapp目录下新建main.py,填入以下代码:
PyQt5示例:
import sys<br>from PyQt5.QtWidgets import QApplication, QMainWindow<br>from ui_main import Ui_MainWindow<br><br>class MainWindow(QMainWindow, Ui_MainWindow):<br> def __init__(self):<br> super().__init__() <br> self.setupUi(self)<br> self.pushButton.clicked.connect(self.on_click)<br><br> def on_click(self):<br> self.label.setText("已点击!")<br><br>if __name__ == "__main__":<br> app = QApplication(sys.argv)<br> window = MainWindow()<br> window.show()<br> sys.exit(app.exec_())
保存后,在终端执行python3 main.py,窗口弹出且点击按钮时标签文字更新,即表示PyQt5开发链路完整跑通。
PySide6用户只需将第一行from PyQt5.QtWidgets改为from PySide6.QtWidgets,最后一行app.exec_()改为app.exec(),其余代码完全一致——这是PySide6与PyQt系列高度API兼容的体现。











