当前位置: 首页 > ds >正文

Python 打包兼容Win7 的Qt 程序

之前用PySide6 写了个上位机软件,在Win7 上不能运行,于是整了半天。主要是有两个问题:

  1. Python 版本兼容;
  2. Qt 版本兼容;

一、Python 版本兼容

搜到的回答都是说Python3.9 以后就不兼容Win7 了,所以得降版本到3.8。但是自己的代码降版本容易,库的版本要是降到3.8,新功能都用不了,还可能遇到旧版本的BUG 和性能问题。目前我用的一个核心库要求版本在3.10 以上,老版本不堪用,所以降版本代价挺大的。

好在找了个第三方编译的支持WIN7 的Python 版本,仓库:https://github.com/adang1345/PythonWin7。这位义士自己编译了3.9 以后的版本,支持Windows7 SP1。我本地安装了它的3.10.12 版本,用这个版本搭好环境,pyinstaller 一打包,拿到WIN7 就基本能跑了,日常我在WIN10 也可以直接用这个版本。

二、Qt 版本兼容

Python 本体能兼容Win7 以后,纯Python 写的库就可以直接运行了,Qt 这样的套壳库就不一定。Qt6 基本不兼容Win7,虽然搜到说可以自己想办法反向移植,但是算了,我们脚本小子整不来那种东西,所以就只好从PySide6 迁移到PyQt5。我的程序不算复杂,并不怎么依赖Qt6,可以无痛苦迁移到Qt5。以防以后还想再改回PySide6,弄了个单独的模块负责导入Qt 模块,其他脚本不直接导入Qt 库,以后改Qt 版本只要改这个模块就行。

'''
qt625.py让Pyside6 脚本尽量少修改的迁移到PyQt5
'''from PyQt5.QtWidgets import (QApplication,QWidget,QLabel,QMainWindow,QMessageBox,QTableView,QStyle,QLineEdit,QCheckBox,QRadioButton,QComboBox,QFormLayout,QTableWidgetItem,QSpinBox,QDoubleSpinBox,
)from PyQt5.QtGui import (QStandardItemModel,QStandardItem,QColor,QFont,QPalette,QStandardItem,QStandardItemModel,QCloseEvent,QTextCursor,
)from PyQt5.QtCore import (Qt, QObject,QThread,QModelIndex,QPointF,QCoreApplication,QSettings
)from PyQt5.QtCore import pyqtSignal as Signal
from PyQt5.QtCore import pyqtSlot as Slot

就这么简单。后续功能升级要是用到了其他复杂的库,比如numpy 之类的,版本问题估计还得喝一壶,但是现在暂时不用考虑。

http://www.xdnf.cn/news/3210.html

相关文章:

  • 【题解-Acwing】869. 试除法求约数
  • 解决react-native下背景图渲染,统一处理组件BackgroundImage
  • 【Python笔记 05】 if判断、比较运算符与逻辑运算符
  • 《AI大模型应知应会100篇》【精华】第40篇:长文本处理技巧:克服大模型的上下文长度限制
  • 如何防止丝杆支撑座锈蚀?
  • MIT6.S081-lab7
  • 第12讲:组合多图(Patchwork)艺术
  • C++复习补充 IO
  • Nginx核心功能与LNMP部署
  • C语言Makefile编写与使用指南
  • 小米喷墨打印机Mi All-in-One Inkjet Printer电脑通过管理打印设备扫描文件方法完整记录
  • 「国产嵌入式仿真平台:高精度虚实融合如何终结Proteus时代?」——从教学实验到低空经济,揭秘新一代AI赋能的产业级教学工具
  • 使用O_DIRECT + 批量写数据到磁盘对丢包率的优化
  • Hanko:身份验证和用户管理解决方案,Clerk Auth0 的开源替代
  • [密码学实战]SDF之对称运算类函数(四)
  • 【缓冲区分析】叠加分析-要素叠加
  • Plesk 下的 IP 地址管理
  • MicroBlaze软核的开发使用
  • 分步详解:凤凰6000模拟器接入Unity Input System‌(
  • docker排查OOM Killer
  • SVN子路径权限设置及登录方法详解
  • docker学习笔记6-安装wordpress
  • AB3 有效括号序列
  • C++的vector中emplace_back() 与 push_back() 的区别
  • 新型电子式EDT-5土动三轴实验系统
  • NodeJS读写(同步异步、流式、分片策略)
  • CentOS环境下搭建seata(二进制、MySQL)
  • 安装deepspeed时出现了以下的错误,如何解决CUDA_HOME does not exist
  • vue3+flex动态的绘制蛇形时间轴
  • 远程桌面导致Quartus 破解失效