1. 前言
使用vsCode 开发 PyQt5项目,对我来说,属于"熟悉的陌生人":之前经常使用visual studio和Qt框架,当然python也学过一点语法。这次直接用VSCode写具体的PyQt5项目,在基于现有项目可参考的基础上,属于先模仿,再学习。现在项目模仿写的差不多了,又有了时间,可以细细学习项目中的一些小知识点。
2. 开发环境
win11 + VSCode(v1.11.9) + PyQt5 +Python(v3.13.12)
3. 在VSCode上配置PyQt5
关于这部分内容网上很多,下面是我随便搜到的,可作为配置部分的参考,项目创建部分我不太建议,具体后面再说。
手把手一起在VSCode上配置PyQt5_vscode pyqt-CSDN博客
4. 创建 PyQt5 新项目
4.1 创建工作区
创建文件夹,并命名,比如"helloPyQt5",打开VSCode,点击【打开文件夹】打开刚刚创建的文件夹。这部分操作相当于创建项目工作区,也就是这个文件夹相当于新项目的工作区。
当然,也可以先【新建文件】,再【将文件夹添加到工作区】。

4.2 新建新建main.py文件。
【新建文件】命名为main.py,可先添加程序运行入口。
if __name__ == '__main__':
print('hello')
4.3 创建 ui文件
在资源管理器项目目录空白处,右键菜单选择【PYQT:New Form】,即会弹出 Qt Designer 可以进行页面设计。设计完成后,命名保存。


4.4 编译ui文件
选中对应的ui文件,右键菜单选择【PYQT:Compile Form】进行编译,编译完成后会生成对应的py文件。

4.5 编辑页面逻辑
代码中调用生成的py文件的类,写入页面逻辑。调用ui的py文件,我见过三种写法,具体如下:
4.5.1 多继承 + python2 老式写法
super(Widget,self)属于python2的写法,告诉从Widget这个类的父类开始,调用父类的方法。
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from Ui_widget import Ui_widget
class Widget(QWidget,Ui_widget):
def __init__(self, parent = None):
super(Widget,self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = Widget()
widget.show()
sys.exit(app.exec())
4.5.2 多继承 + Python3 的写法
和python2 区别就是super()的写法简化了。
super().__init__(parent)
4.5.3 PySide6 的写法(ui 与 业务逻辑分离)
都知道pyside6 和 pyqt5 写法几乎一致,我便尝试了这种写法,结果是可以的,而且我更喜欢这种写法,更符合之前的调用习惯,ui部分的控件函数联想也更方便(我现在用多继承的,只能到控件名,无法联想到对应控件的方法)
class Widget(QWidget):
def __init__(self, parent = None):
super().__init__(parent)
#以下不同
self.ui = Ui_widget()
self.ui.setupUi(self)
self.ui.label.setText('Hello World')
4.6 关于 Python中的程序运行入口
4.6.1 python 中的 main函数
在C++ 或 java 等语言中,都有特殊函数main 作为程序入口,但在python 中,main函数本身并不是语言内置的特殊函数,但通过与**name == "main"**配合使用,它成为推荐的程序入口点规范,广泛用于提高代码的可复用性和结构清晰度。
__name__ 是 Python 的内置变量,表示当前模块的名称。
- 当模块直接运行时,name 的值为 "main"。
- 当模块被导入时,name 的值为模块文件名(不含 .py)。
因此,以下代码块仅在脚本直接执行时运行,被导入时不执行:
import sys
def main() -> int:
print('hello')
return 0
if __name__ == "__main__":
sys.exit(main())
简化后的,就直接在*if name == 'main':*下写逻辑了。
4.6.2 PyQt5 必须要有QApplication + app.exec_()
执行代码中,涉及到Qt的,必须要有QApplication``,一般格式都是:
if __name__ == '__main__':
app = QApplication(sys.argv)
...
sys.exit(app.exec())
4.7 程序执行
- 点击运行按钮:在main.py页面点击其右上角的运行按钮,就会在此页面找程序入口,运行;


- 输入命令行执行:在下方终端处输入执行命令,回车键,就会执行

5. 结束语
又开启Qt 的另一个领域了。