Python QT笔记

文章建议初学者先学习QT的MAKE知识,推荐《PythonQtGui与数据可视化编程》的前两章作为基础。书中介绍了QT软件安装、设计原理和开发方法。然而,书本内容可能对新手来说较难理解。文章还提到了pyuic5和pyuic6在转换.ui文件时的差异,以及如何通过错误定位和对比源代码找到解决方案。
摘要由CSDN通过智能技术生成

对于QT, 新手经常做到哪查到哪。例如以下个人认为不错的网站:

Python Qt 简介 | 白月黑羽

Qt Designer 简介_哔哩哔哩_bilibili

      但问题是,这些大都是碎片化的信息。当前爽,过后忘。对于初学者,东学西学,学的越多碎片,越容易困惑。没有结构化的知识,和可重复性复习的教材。隔段时间再回来,脑中什么都没有。本文推荐是另一种可复制的有效学习方法,不仅适合QT,也适合其他领域知识或工具。

     初学者先系统性学MAKE(新领域最小化系统知识)知识。学习完MAKE知识后,在自己的项目中开始边实战边查书,或靠网络来碎片化解决碎片问题。

推荐MAKE阶段学习教材:《Python Qt Gui与数据可视化编程》的第一、二章。

优点:1,对QT软件安装、QT的设计原理、优秀便捷的程序架构思想、敏捷开发方法都有非常好的介绍和实战。会对日后做QT,甚至整个项目开发打下非常坚实的基础。

缺点:书本写的对初学者有些晦涩难懂,虽仅有两章,也需要沉下心学几天。且过一阵子有忘掉,还得捡回来看。

一、安装对应软件

详见我的上一篇CSDN博文:CSDN

或该博文:PyQt的安装与配置简明教程_pyqt安装-CSDN博客

二.如何将python将自己的代码封装成不可见源码的库?

参考以下文章:

python将自己的代码封装成不可见源码的库(生成pyd文件)

2.1遇报错“error: Microsoft Visual C++ 14.0 is required”的解决办法:

 打开conda输入界面,用管理员命令执行以下代码“conda install libpython m2w64-toolchain -c msys2”即是最佳方法,亲测有效。{ref:Microsoft Visual C++ 14.0 is required._哈哈哈,冲冲冲的博客-CSDN博客}

(有些在内网不能用pip或conda安装的,且无法安装visual studio 生成工具2022的,可以安装visual studio 15生成工具2017)

2.2:用特定版本的python编译器来编译。

比如conda中的虚拟环境python310,可以利用conda来取代powershell工具:

   step1,在conda中打开虚拟环境:activate python310,并且cd切换到源文件.py和setup.py的文件夹。

  step2,执行 python setup.py build_ext --inplace语句即可。

        注意,生成的pyd文件是用特定python生成特定python版本的pyd,在引用时必须对应的python版本解释器才能发现。比如,如果你开发时是Python3.10。将文件打包发给小B,其版本是Python3.9,那么其在打开主程序执行时,会报错找不到pyd的文件。所以,如果让小B也能执行,必须同时将Python3.10和Python3.9的pyd也同时放进文件夹。

三,如何将Python的文件打包成exe文件

利用pyinstaller模块,打开cmd窗口后,安装方式如下:普通速度:pip install pyinstaller  

极速:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller

当安装完成pyinstaller模块,在目标文件夹中打开cmd后,输入:

Pyinstaller -F -w 文件名.py

即可一条语句打包成功。

本文一步一步地教你如何将Python程序打包成exe文件—赶紧进来学习吧_程序员老华的博客-CSDN博客

一些常见BUG:

一、下载的一些工程,可以正常run。自己再用pyuic6、或pyuic5 去转化ui文件生成的东西,结果就不能运转了。报错如下,此报错极其隐蔽,google或baidu也无法查到原因,所以会困惑很久:

TypeError: 'PySide6.QtWidgets.QWidget.setFont' called with wrong argument types:
  PySide6.QtWidgets.QWidget.setFont(QFont)
Supported signatures:
  PySide6.QtWidgets.QWidget.setFont(Union[PySide6.QtGui.QFont, str, Sequence[str]])

解答:pyuic6   =\=     pyside6-uic

      一、原.ui文件用“pyuic6 -o ui_main_window.py main_window.ui”和"pyuic5 -o ui_main_window.py main_window.ui"生成后的.py文件用pycharm的compare方法比较,基本相同(只是pyuic6在函数内部一般会写上parent=ABC,比pyuic5直接写ABC可读性更高一些),说明pyuic5和pyuic6编译的内容基本一致。

      二、pyuic6和pyuic5生成的.py和原作者生成的.py大相径庭。且网上没有关于此类的报错的解答,除了找原作者,基本上无从查找问题。

三、联系作者,仔细对比他生成的每一步步骤,发现问题:

她用的工具是pycharm嵌套的pyside6-uic,和我的pyuic6其实并不一样。

于是在commander命令行,操作路径和pyuic6一样,只是语句改成:“pyside6-uic -o ui_main_window.py main_window.ui”后,整个程序就直接RUN成功了。

结论:

一、生成结果:

pyuic5、pyuic6和pyside6-uic三种方法都能将.ui转化为.py文件。前两者生成的相似,且和第三种有很大不同。

二、如何识别?

靠报错无法识别。问原作者是最高效的方式。有时候可能原作者也没有注意到区别,这时候就要仔细看他操作每一步。

另外,注意看生成后的文件头,也有不同:

pyuic5:# Created by: PyQt5 UI code generator 5.15.7
pyuic6:# Created by: PyQt6 UI code generator 6.5.1
pyside6-uic:## Created by: Qt User Interface Compiler version 6.5.1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值