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安装”步骤

参考

  • vscode配置pyqt5全过程:https://blog.csdn.net/qq_37080185/article/details/121616507
  • Python 小白从零开始 PyQt5 项目实战(8)汇总篇(完整例程):https://blog.csdn.net/youcans/article/details/120925109
  • PyQt5 教程:https://www.w3schools.cn/pyqt5/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/17355.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0学会Spring框架

文章目录 1. 对Spring的理解2. Spring IoC3. DI4. 如何创建一个Spring项目4.1 创建一个Maven项目4.2 添加Spring框架支持4.3 添加启动类 5. 存储Bean对象5.1 添加配置文件5.2 创建Bean对象5.3 注册Bean 6. 获取并使用Bean对象7. 更简单存储Bean对象的方式7.1 前置工作7.2 添加存…

基于javaweb的学生就业管理系统

一、简介 学生基业管理系统有三个角色:管理员、企业、学生 对学生信息管理、企业信息管理、求职信息管理 后端架构:spring springmvc mybatis 前端架构:jsp layui 系统环境:jdk1.8 | maven | mysql 二、主要功能 1. 登录…

一个集团企业,如何从0到1构建信息化系统?

当今时代,信息技术已经成为企业发展不可或缺的一部分,特别是对于一个大型集团公司来说,如何构建一个高效的信息化系统对于其业务发展至关重要。 我们想要构建一个优质高效的信息化系统,首先需要了解现在大的趋势是怎样的。 目前…

看我如何通过帮助服务台轻松黑掉数百家公司

导语:几个月前,我发现黑客可以利用一个漏洞访问目标公司的内部通信。 这个漏洞只需要点击几下,就可以访问企业内部网络、 Twitter等社交媒体账户,以及最常见的Yammer和Slack团队。 更新: The Next Web 写了一篇我发现的这个漏洞的…

【Java笔试强训 28】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥猴子分桃…

二分法相关使用

文章目录 1. 在一个有序数组中,找某个数是否存在2. 在一个有序数组中,找大于等于某个数最左侧的位置3. 在一个有序数组中, 找小于等于某个数最右侧的位置4. 局部最大值问题 1. 在一个有序数组中,找某个数是否存在 在线OJ:704. 二分查找 有序数组下的二分思路如下:…

几种常见时间复杂度实例分析

多项式量级 常量阶 O(1) 对数阶 O(logn) 线性阶 O(n) 线性对数阶 O(nlogn) 平方阶O(n2 ),立方阶O(n3 )...k次方阶O(nk) 非多项式量级(NP(Non-Deterministic Polynomial,非确定多项式)问题) 指数阶O(2n) 阶乘阶…

Android WebRtc+SRS/ZLM视频通话(1):虚拟机安装Ubuntu

Android WebRtcSRS/ZLM视频通话(1):虚拟机安装Ubuntu 来自奔三人员的焦虑日志 秉着没事找事的原则,这里直接从服务器安装开始说起,也当记录自己这一路以来的愚昧之举,由于没有物理服务器,这里以…

MySQL 精选 35 道面试题大厂稳了(含答案)

MySQL 精选 35 道面试题 1.说一下 MySQL 执行一条查询语句的内部执行过程?2.MySQL 查询缓存有什么优缺点?3.MySQL 的常用引擎都有哪些?4.常用的存储引擎 InnoDB 和 MyISAM 有什么区别?5.什么叫回表查询?6.如果把一个 I…

95后阿里P7晒出工资单:狠补了这个,真香···

最近一哥们跟我聊天装逼,说他最近从阿里跳槽了,我问他跳出来拿了多少?哥们表示很得意,说跳槽到新公司一个月后发了工资,月入5万多,表示很满足!这样的高薪资着实让人羡慕,我猜这是税后…

TCP的粘包和拆包

UDP有数据边界,TCP是没有数据边界,是流协议。如何拆包,就要靠应用层来处理。 四层网络模型,消息在进入每一层时都会多加一个报头。mac头部记录的是硬件的唯一地址,IP头记录的是从哪来和到哪去,传输层头记录…

优化问题的拉格朗日Lagrange对偶法原理

首先我们定义一般形式的求解x的优化问题: 表示优化的目标函数,上述为最小优化,实际上最大优化可以改写为的形式表示第i个不等式约束表示等式约束 1. Lagrange对偶问题 上述优化问题的拉格朗日Lagrange对偶法求解,是将上述带约束…

【Vue学习笔记6】好用的 Vueuse 工具包

1. 安装Vueuse VueUse 的官方(https://vueuse.org/)的介绍说这是一个 Composition API 的工具集合,适用于 Vue 2.x 或者 Vue 3.x,用起来和 React Hooks 还挺像的。 VueUse 插件的安装 npm install vueuse/core2. 实现全屏功能 …

【网络安全】记一次杀猪盘渗透实战

看起来非常假的网站,这个网站是没有 cdn 的用的是 thinkphpk 框架搭建的。 先打一波 poc 没有效果 访问一下后台直接在 url 后面加/admin。 一个开源的 cms 还没有验证码尝试用 burp 进行爆破,首先在火狐上设置代理 ip 为 127.0.0.1 代理端口为 8081。 B…

GPT详细安装教程-GPT软件国内也能使用

GPT (Generative Pre-trained Transformer) 是一种基于 Transformer 模型的自然语言处理模型,由 OpenAI 提出,可以应用于各种任务,如对话系统、文本生成、机器翻译等。GPT-3 是目前最大的语言模型之一,其预训练参数超过了 13 亿个…

ChatGPT终于被我问到胡说八道的程度了!

问:Python是强类型语言,还是弱类型语言 chatgpt:Python是强类型语言。Python很少会隐式地转换变量的类型,所以Python是强类型的语言 问:什么是强类型语言 chatgpt:强类型语言是指在编程语言中&#xff0…

Packet Tracer - 配置交换机端口安全

Packet Tracer - 配置交换机端口安全 地址分配表 设备 接口 IP 地址 子网掩码 S1 VLAN 1 10.10.10.2 255.255.255.0 PC1 NIC 10.10.10.10 255.255.255.0 PC2 NIC 10.10.10.11 255.255.255.0 非法笔记本电脑 NIC 10.10.10.12 255.255.255.0 目标 第 1 部…

MTK6765安卓智能模组5G核心板联发科MTK方案主板开发板

联发科MTK6765这是一款12纳米八核A53处理器,最高运行速度可达2.3GHz。它使用Android 9.0操作系统,配备2G16G内存,也支持其他选项1G/3G/4G8G/32G/64G。 此外,它支持全球主流频段,包括默认的国内频段以及2G GSM、2G/3G E…

学生台灯什么牌子好对眼睛好?专业护眼灯的学生台灯分享

据报告统计,2022年我国儿童青少年总体近视率为52.7%,其中6岁儿童为14.3%,小学生为35.6%,初中生为71.1%,高中生为80.5%,这些数据让人不寒而栗! 专家表示,导致儿童青少年近视的因素&am…

离散数学下--- 代数系统

代数系统 定义: 代数系统是用代数运算构造数学模型的方法。 • 通过构造手段生成,所以也称代数结构 • 代数运算:在集合上建立满足一定规则的运算系统 (一)二元运算 二元运算的定义 二元运算需要满足的两个条件&a…