PyQt5 基础篇(一)-- 安装与环境配置

1 PyQt5 图形界面开发工具

        Qt 库是跨平台的 C++ 库的集合,是最强大的 GUI 库之一,可以实现高级 API 来访问桌面和移动系统的各种服务。PyQt5 是一套 Python 绑定 Digia QT5 应用的框架。PyQt5 实现了一个 Python模块集,有 620 个类,6000 个函数和方法。PyQt5 的优点:简单好用,功能强大, 跨平台支持,文档齐全,稳定性高,生态支持,开源免费。

        本文使用Anaconda+VSCode配置PyQt5环境,在开始之前新建Anaconda的虚拟环境,如果不需要虚拟环境可以直接使用默认的Base环境。详细安装过程请参考:Anaconda 和 PyTorch安装

2 Anaconda+VSCode+QT Designer配置PyQt5环境

2.1 创建虚拟环境

        虚拟环境的本质,就是在你电脑里安装了多个Python解释器(可执行程序),每个Python解释器又关联了很多个包、模块;项目代码在运行时,是使用特定路径下的那个Python解释器来执行。

# 格式如下
conda create -n 虚拟环境名字 python=版本  # 创建虚拟环境,开始新项目时执行一次
conda activate 虚拟环境名字 # 进入虚拟环境,每次打开终端都需要执行
conda deactivate # 退出虚拟环境,一般很少使用
conda remove -n 虚拟环境名字 --all  # 删除虚拟环境,一般很少使用
# 示例
conda create -n test python=3.8
conda activate test
conda deactivate
conda remove -n test --all

2.2 安装PyQt5

1. pip 安装 PyQt5

        在新创建的虚拟环境中安装PyQt5

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/

        安装了 PyQt5 就可以用 Python 语言编写 Qt 程序。例如,可以用一个简单的例程,检测 PyQt5 的安装是否成功。

from PyQt5 import QtWidgets
import sys

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)  # 初识化界面
    MainWindow = QtWidgets.QWidget()        # 生成一个主窗口
    MainWindow.show()                       # 显示主窗口
    sys.exit(app.exec_())                   # 在线程中退出  

        运行程序,将弹出如下界面:

2. pip 安装 QtTools

        虽然安装 PyQt5 就可以编程实现 GUI,但是学习、编程、调试、修改都是相当复杂和繁琐的。而 Qt Designer 基本是通过人机交互的排版方式进行界面设计,非常方便、直观。所以我在使用 Qt Designer 图形界面设计工具之后,就再也不愿意编写 Python 程序来实现 GUI 了。

        Qt Tools 包含了两个重要的工具:

  • 图形界面设计工具 Qt Designer,用于设计图形界面,生成 .ui文件,以 xml 格式存储界面和控件的属性;
  • UI 文件转换工具 PyUic,用于将 .ui 文件解析为 .py 文件的工具。
    Qt Tools 工具可以直接使用 pip 方式安装:
pip install PyQt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.3 VSCode安装插件

        在vscode应用商店中安装PYQT Integration插件,安装完成后点击pyqt integration右下角的小齿轮,选择扩展设置extension settings,设置下面两个path(可以搜索anaconda和python的安装目录进行查找)

  1. 运行调试选择Python解释器,我这里解释器是Python 3.8.16 (被命名为pyqt5)
  1. Pyqt-integration › Qtdesigner: Path

        我的路径为 C:\Users\CarpeDiem\.conda\envs\pyqt5\Lib\site-packages\qt5_applications\Qt\bin\designer.exe

  1. Pyqt-integration › Pyuic: Cmd

        我的路径为 C:\Users\CarpeDiem\.conda\envs\pyqt5\Scripts\pyuic5.exe

2.4 QtDesigner 和 PyUIC 的快速入门

  1. 在VSCode工作区右击,选择 PYQT:New Form,会弹出 Qt Designer 设计器

(1) 新建窗体

        首次运行 QtDesigner 时可能会自动弹出 “新建窗体” 对话框,也可以通过菜单栏选择:“文件 -> 新建” 或快捷键 “Ctrl+N” 唤起 “新建窗体” 对话框。

        在 “新建窗体” 窗口的左侧菜单选择 “MainWindow” 新建一个图形窗口。

(2) 设计图形界面

        QtDesigner 的使用界面与 AutoCAD 等设计软件类似,很好上手。

        主界面分左中右三部分,左侧是各种备选的控件对象,右侧上方的 “对象查看器” 显示控件的树状结构,右侧下方的 “属性编辑器” 显示控件的各种属性,中间部分用于显示所设计的界面。

        新建的窗口 “MainWindow” 虽然是一个空白的图形窗口,但已经生成了 centralwidget、menubar、statusbar 三个基本控件,可以在右侧上方 “对象查看器” 查看这些控件及结构。

        下面我们为新建的图形窗口添加几个图形控件:

        新建一个按钮控件:

  • 从左侧控件栏的 Button 中选择 PushButton 按钮,鼠标左键点中 PushButton 按钮不放,移动鼠标将 PushButton 按钮拖动到中间的新建图形窗口内的任意位置,松开鼠标左键,就在图形窗口位置生成了一个 PushButton 按钮对象。
  • 鼠标左键点击图形窗口中的这个 PushButton 按钮对象,拖动按钮可以调整控件的位置,对于其它控件也可以通过鼠标拖动来调整位置。
  • 鼠标选中 PushButton 按钮对象,控件周围的边界位置上就出现 8个蓝色的点,表示控件被选中,这时可以在右侧的 “属性编辑器” 内对对象的属性进行编辑和修改,例如:
    • 将 PushButton 对象的高度修改为 120,宽度修改为 40;
    • 将 PushButton 对象的 “QAbstractButton->text” 修改为 “测试按钮”;

新建一个文本显示框控件:

  • 从左侧控件栏的 InputWidget 中选择 TextEdit 按钮,鼠标左键选中 TextEdit 按钮拖动到新建图形窗口内的,松开鼠标左键就在图形窗口生成了一个 TextEdit 对象。
  • 鼠标选中 TextEdit 对象,在右侧的 “属性编辑器” 内可以对对象的属性进行编辑和修改,例如:
    • 将 TextEdit 对象的高度修改为 300,宽度修改为 200;
    • 对于 TextEdit 对象的显示内容可以用 html、markdown 等格式编辑,也可以鼠标双击 TextEdit 对象唤出 html 编辑对话框,输入希望显示的内容。

        现在,我们就已经用 Qt Designer 完成了一个基本的图形界面。

(3) 将设计的图形界面保存为 .ui文件

        在设计器中进行控件设计,保存。命名为 test03.ui。回到VSCode,发下工作目录下多出 *.ui 文件

(4) 右键生成的 test03.ui,选择 PYQT:Compile Form,则会自动生成 UI_test03.py 文件

  1. 我们编写一个主程序调用设计的图形界面 UI_test03.py,就可以完成一个图形界面应用程序
"""
@author: CarpeDiem
@date: 23/5/1
@version: 0.1
@description: PyQt5初步使用
@Idea: Demo of GUI by PyQt5
"""
from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from Ui_test03 import Ui_MainWindow

if __name__ == "__main__":
    app = QApplication(sys.argv)        # 创建应用程序对象
    main_window = QMainWindow()         # 创建主窗口
    ui = Ui_MainWindow()
    ui.setupUi(main_window)
    main_window.show()                  # 显示主窗口
    sys.exit(app.exec_())               # 在主线程中退出 

        运行程序 GUI_Demo2.py,将弹出如下的图形界面:

        这里的按钮和点击之后并没有任何反应,这是因为我们还没有设置这些控件所触发的动作和应用。在以后的程序中,我们将不断增加和丰富这个图形界面应用程序。

补充:

        常见错误:无法将*.ui文件转为py文件
        将 *.ui 文件转为py文件使用的是 pyuic5.exe 程序,常用的命令为 pyuic5 -o destination.py source.ui,其中-o 是操作参数,表示要生成一个文件,即将 source.ui 转换成 destination.py。在配置好PYQT Integration插件后,经常会遇到ImportError: DLL load failed: 找不到指定的模块 的错误。常见原因有两个:

  1. python3.dll丢失:通过Anaconda安装的Python缺少了python3.dll,可以从网上下载python3.dll,然后放到 Anaconda中python36.dll所在目录中;
  2. PyQT5包冲突(大部分是这个错误)

原因2的解决方法:

  • 执行 pip uninstall PyQt5 再重新安装
  • 如果还是不行,则使用 pip list 命令查看已安装的包,将里面有关 PyQt 和 Qt 的相关项全部卸载,然后重新执行上面的“PyQt5安装”步骤

参考

猜你喜欢

转载自blog.csdn.net/xq151750111/article/details/130535706