本章目录
- Part Ⅰ:环境搭建
- Part Ⅱ:第一个程序
由于工作需要,需要设计个桌面程序,所以起了学习PyQt的念头。
这里一边梳理下学到的内容,一边也贴一些在使用过程中遇到的坑。
环境概述:
- Win10操作系统
- Python3.8.10
- PyCharm
Part Ⅰ:环境搭建
- 安装PyQt5
打开PyCharm下方的terminal,在里面输入
pip install pyqt5 -i https://pypi.douban.com/simple
: 测试下markdown的注释
其中,-i后面的https://pypi.douban.com/simple为国内豆瓣源地址,可大幅度提高下载速度,仅限本次安装,永久方式可自行百度。
- ImportError: DLL load failed报错处理
如果使用PyCharm的venv虚拟环境,运行pyqt项目会报错
ImportError: DLL load failed while importing QtWidgets: 找不到指定的模块。
这是因为虚拟环境缺少一个python3.dll文件,可以在terminal里输入
where python
找到安装目录下的python3.dll,并将其拷贝的项目venv虚拟环境下的Scripts目录即可解决该错误。
Part Ⅱ:第一个程序
环境搭建完毕后,可以写个简单的代码庆祝下
import sys
from PyQt5.QtWidgets import QApplication, QLabel
if __name__ == "__main__":
app = QApplication(sys.argv) # 初始化一个GUI程序的控制流和管理流
label = QLabel("Hello World!") # 初始化一个文本控件并设置文本显示内容
label.show() # 设置控件显示
sys.exit(app.exec()) # 等待app结束后退出程序
程序运行结果如下:
- QApplication:
QApplication 继承 QGuiApplication,而 QGuiApplication 继承 QCoreApplication。这三者的区别为:
- QApplication:基于Widget的GUI,也就是常用的控件,比如文本、按钮之类的
- QGuiApplication:不限于Widget的GUI,暂时用不上。
- QCoreApplication:不基于GUI的程序,暂时也用不上。
需注意的是,一个程序只能有一个QApplication对象,也就是单例模式。
- QLabel
文本控件,下节一起说说常用用法,暂时先记住即可。 - app.exec()
app.exec()的作用就是进入程序的主循环直到exit()被调用,也就是说从此处开始打开GUI窗口并阻塞,show()函数并不是显示,点击弹出窗口的关闭按钮后,返回一个整数给sys.exit,正式推出程序。