对于QT, 新手经常做到哪查到哪。例如以下个人认为不错的网站:
但问题是,这些大都是碎片化的信息。当前爽,过后忘。对于初学者,东学西学,学的越多碎片,越容易困惑。没有结构化的知识,和可重复性复习的教材。隔段时间再回来,脑中什么都没有。本文推荐是另一种可复制的有效学习方法,不仅适合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