python-PySide6记录
python-PySide6记录
前篇
- 离线安装包, 阿里镜像 - https://mirrors.aliyun.com/qt/snapshots/ci/pyside/6.6.3.1/35097fc6cc72d9a2616ebc3c35515d09e1704478/pyside6/
PyQt6 和 PySide6 对比
PyQt6和PySide6都是用于调用Qt6 API的Python库,使用它们可以轻松在Python语言中创建基于Qt的GUI程序;PyQt6和 PySide6最大的不同表现在发行许可上;
PyQt6是由 Riverbank Computing 公司开发,出现的比较早;它采用 GPLv3许可证和商业许可证发布;这表示你如果使用PyQt6 ,则必须将你的代码进行开源;如果要闭源,则需要购买商业许可;
PySide6是 Qt 官方的库,亲儿子,出现的时间要比PyQt晚的多,这也是很多人知道PyQt不知道PySide的原因;但随着版本的迭代,PySide6越来越强大,作者更看好PySide;
PySide6采用LGPL许可发布,这意味着只要你以调用动态链接库的形式使用 Qt ,你可以以任何形式(商业、非商业、开源、非开源)发布你的程序;
安装
主要是安装一下几个包
1
2
3
4PySide6
shiboken6
PySide6-Addons
PySide6-Essentials在线安装
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15$ pip3 install PySide6
Collecting PySide6
Downloading PySide6-6.6.3.1-cp38-abi3-win_amd64.whl (520 kB)
---------------------------------------- 520.6/520.6 kB 1.6 MB/s eta 0:00:00
Collecting PySide6-Addons==6.6.3.1
Downloading PySide6_Addons-6.6.3.1-cp38-abi3-win_amd64.whl (111.7 MB)
---------------------------------------- 111.7/111.7 MB 4.4 MB/s eta 0:00:00
Collecting shiboken6==6.6.3.1
Downloading shiboken6-6.6.3.1-cp38-abi3-win_amd64.whl (1.1 MB)
---------------------------------------- 1.1/1.1 MB 2.9 MB/s eta 0:00:00
Collecting PySide6-Essentials==6.6.3.1
Downloading PySide6_Essentials-6.6.3.1-cp38-abi3-win_amd64.whl (77.3 MB)
---------------------------------------- 77.3/77.3 MB 3.7 MB/s eta 0:00:00
Installing collected packages: shiboken6, PySide6-Essentials, PySide6-Addons, PySide6
Successfully installed PySide6-6.6.3.1 PySide6-Addons-6.6.3.1 PySide6-Essentials-6.6.3.1 shiboken6-6.6.3.1离线安装
去阿里镜像下载一下四个包 - https://mirrors.aliyun.com/qt/snapshots/ci/pyside/6.6.3.1/35097fc6cc72d9a2616ebc3c35515d09e1704478/pyside6/
1
2
3
4PySide6_Addons-6.6.3-cp38-abi3-win_amd64.whl
PySide6_Essentials-6.6.3-cp38-abi3-win_amd64.whl
PySide6-6.6.3-cp38-abi3-win_amd64.whl
shiboken6-6.6.3-cp38-abi3-win_amd64.whl新建一个 requirements.txt 文件, 内容如下
1
2
3
4PySide6==6.6.3
PySide6_Addons==6.6.3
PySide6_Essentials==6.6.3
shiboken6==6.6.3cd 到这个目录下, 执行安装命令
1
$ pip3 install --no-index --find-links=. -r requirements.txt
可视化编辑
- 安装完 PySide6 后, 在对应的安装目录下能找到可视化编辑程序 designer.exe, 如:
D:\Python38\Lib\site-packages\PySide6\designer.exe
踩坑
QUiLoader 卡主进程
QUiLoader 必须在 QApplication 之前就实例化好
1
2
3
4
5
6
7ui_file = QFile(utils.getDesktop("layout.ui"))
ui_file.open(QFile.ReadOnly)
loader = QUiLoader() # 必须在 QApplication 之前实例化
app = QApplication(sys.argv)
window = loader.load(ui_file)
window.show()
sys.exit(app.exec())参考: https://stackoverflow.com/questions/77736041/pyside6-quiloader-doesnt-show-window
窗口 show 完后立马消失
原因: 实例化 ui 到 wgt_tmp 临时变量, 方法执行完毕后就destroyed
解决办法: 起个全局变量或者不会被释放的变量引用住这个 ui 实例即可
参考: https://blog.csdn.net/zhuoyue008/article/details/82704031
QThread 执行后闪退
报错:
QThread: Destroyed while thread is still running
原因是 QThread 对象里面的方法还未执行完, QThread 对象就被释放了
解决办法: 起一个持久化变量引用住 QThread 对象即可