GUI选框架,不是挑工具而是定路线。
好多人误以为, 随意找个库房就能开动上手, 然而, 做了一半时却被卡死在了, 许可证或者, 打包这些方面上。
明明代码写得差不多了,却因为选错了起点,最后全重来。

是那种自身携带之物, 安装完毕便能够使用, 就连pip都无需安装。我初次撰写读取文件弹窗, 十分钟便完成, 既没有报错, 也未曾查找教程。而后进行更换, 仅仅安装依赖和配置环境就折腾了两个小时, 还遭遇了Qt版本不兼容状况。并非多么厉害, 而是它不会给你增添麻烦, 促使你先弄明白GUI究竟是怎么一回事------按钮点击一下会出现何种反应, 窗口关闭后数据是否还存在, 诸如此类诸多事情它迫使你逐一思索清楚。等你真正编写过几个工具之后, 才发觉它并非是有缺陷, 而是根本就没打算跟你玩花样, 只是踏踏实实地工作。
但若是切实要去打造出一个规规矩矩的软件, 很快便会支撑不住。就好比我为公司所制作的设备监控小工具, 起初使用时展现温度曲线, 然而在 4K 屏上字却模糊成一团, 客户盯着看并说道"这瞅着好似是十年前的软件"。更换, 添加一行`。
(Qt.ing)`, 马上明晰。另外次要嵌入个网页去查看实时日志, 没有这个功能, 强行添加要么失败要么崩溃, 直接拖个``进来, 三行代码就运行成功。这些并非不可行, 而是它的设计目标就不是做这个的。
说成和PyQt6好似双胞胎模样, 实际上差别相当大。PyQt6采用GPL, 若是不开源那就得花钱去买授权, 小公司压根不想算这一笔账;采用LGPL, 闭源状态下能随意使用, 只要你不去动Qt自身的源码便可。我查阅过官方文档, Qt公司自2023年起就开始只进行主推, 并且早就停止更新了。经实际测试打包之后, 于后台线程更新列表之际会更稳定, PyQt6偶尔会出现卡住的情况甚至还得重启。并且两者的uic编译器无法混用, PyQt的ui文件跑去运行会报错, 名字都不一样, 强行转换就等同于重新编写。
我曾尝试过, 上面的按钮确实跟系统完全是一个模样的, 右键菜单以及滚动条的细节全部都是对的。然而Mac上面字体的渲染显得有些怪异, 在Linux系统下还需要去安装GTK依赖。文档全部都是英文写成的, 中文的例子陈旧过时, 搜索到的教程基本上都是2018年的。打包之后有10MB多, 比较大, 启动的时候也会慢上半拍。除非客户指着系统截图说"就要这个样子", 不然真的没有必要去触碰它。
我踩过好几个常见的坑, 一开始学习PyQt6, 觉着教程数量多, 然而项目做到一半的时候发现商用需要授权, 只好回头更换, 结果`.ui`文件编译出来的代码满眼都是红色, 全是错误, 又花费一天重新编写。还有人打算用ttk.Style强行修改皮肤, 调试三天依旧不像样, 最终删除所有内容重新编写界面反倒速度更快。另外进行打包时需要留意, 6.3以后不再支持Win7了, 要是客户的机器还在运行Win7, 必须要手动指定6.0.1版本, 不然安装包直接无法打开。
其实迁移并非那般令人恐惧, 我先使用上一个工具, 将核心逻辑运行顺畅, 像是读取配置、计算数据、弹出提示框这般, 然后把所有业务代码抽取成独立的.py文件, UI部分全部舍弃, 在新项目中通过搭建界面, 原来的那几个文件就可以达成, 如此一来UI发生了更换, 逻辑却未变动, 测试也能节省一半, 并非一定要从头开始学习, 而是在操作过程中进行更换, 关键在于不让UI与业务逻辑捆绑得过于紧密。
此刻我承接业务, 首要反应并非是思索"采用何种框架", 而是要明晰地询问: 这究竟是仅供内部使用, 在短短两天之后便会弃置不用的脚本? 还是准备售卖予客户的正规产品? 是否存在对于4K屏的相关要求? 需不需要嵌入网页? 客户所使用的究竟是何种系统? 待这些问题全部得到解答之后, 框架基本上也就能够确定下来了。并非是因为过时, 而是在于它清楚自身能够发挥何种作用;并非是最为炫酷的, 而是在于它能够使得法律风险降至最低限度;并非是不好的, 而是在于它仅仅适用于特定的场景之中。不存在哪一个框架应当遭受鄙夷, 只有哪一个更加契合当下的这一具体事务。
选框架这件事, 并非难事, 然而, 困难之处在于, 不能仅仅是观看教程, 让hello world运行成功就止步, 而是要切实去写一个具备读取配置、存储数据、弹出确认框功能的最小闭环, 并且这四个功能都要逐一运行一遍。究竟是谁在哪一个步骤上遭遇阻碍, 是谁进行打包时遭遇失败, 又是谁更改一个样式竟耗费两个小时, 只有亲身尝试过这些事情, 才会相信其真实性。
上手快,能走远,只在特定时候有用。
别的都说多了没用,写完第一个真实工具你就知道了。