【python】PyQt5的环境搭建和使用

news2024/11/29 2:35:24

什么是pyQT

pyqt是一个用于创建GUI应用程序的跨平台工具包,它将python与qt库融为一体。也就是说,pyqt允许使用python语言调用qt库中的API。这样做的最大好处就是在保存了qt高运行效率的同时,大大提高开发效率。因为,使用python语言开发程序要比使用c++语言开发程序快的多。pyqt对qt做了完整的封装,几乎可以用pyqt做qt能做的任何事情。

        由于目前最新的pyqt版本是5.11,所以习惯上称呼为pyqt为pyqt5

为什么要开发桌面应用

        桌面应用,也可以成为GUI应用,在windows处于非常火爆的15年时间(1995到2010)里是非常火的,不过最近几年web应用和移动应用抢了风头。尽管web和移动应用看似成为现在的主流。但桌面应用目前仍然为很多类型应用的首选。移动应用由于屏幕太小,机器性能远低于同时代的pc机,所以至少目前来看,在短时间内移动应用是无法取代pc应用的,而在pc浏览器上运行的web应用的主要优势是不需要安装的,只要有浏览器就可以运行。

        但缺点也显而易见,web应用在浏览器部分的逻辑代码通常都是由于javascript语言编写的,运行效率比较低,而且web应用是无法完全控制本机的硬件的,如摄像头,蓝牙设备,打印机,串口等,web应用在用户体验上也不如同时代的桌面应用,而web设备不擅长的事正好是桌面应用的强项,因此,在未来的几十年,桌面应用仍然会占有非常重要的地位。

要讲些什么

Qt Designer

pyQt5基本窗口控件(QMainWindow,Qwidget,Qlabel,QLineEdit,菜单,工具栏等)

pyQt5高级控件(QTableView,QListView,容器,多线程等)

pyQt5布局管理(QBoxLayout,QGridLayout,QFormLayout,嵌套布局等)

pyQt5信号与槽(事件处理,数据传递等)

pyQt5图形与特效(定制窗口风格,绘图,QSS与UI美化,不规则窗口,设置样式等)

pyQt5扩展应用(制作pyQt5安装程序,数据处理,第三方绘图库在pyQt5中的应用,UI自动化测试等)

搭建PyQt5开发环境

参见CSDN:pyQt5环境的搭建_Hi~晴天大圣的博客-CSDN博客_pyqt5环境搭建

1 Python

2 PyQt模块插件

    PyQt5中插件的作用:
    QtDesigner——通过Qt语言进行UI设计(支持拖拽式的UI设计)
    PyUIC——主要用来将QtDesigner代码转化成Python代码
    Pyrcc—— 将图片、数据文件资源打包成py文件

3 PyCharm

因为这里存在网络慢的原因 我使用了手机数据分享给电脑的方式下载的PyQt5

 下载过程有些慢 只能耐性等待...

添加到环境变量:环境变量目录

 C:\Users\xiangbin\AppData\Local\Programs\Python\Python39\Lib\site-packages\PyQt5\Qt5\plugins

问题:在安装第三方库时出现报错"These Packages Do Not Match The Hashes From The Requirements File."

原因:通常是因为网速问题导致的下载错误,导致对应的哈希值不匹配。

解决方法:需要在pip时,添加"–upgrade"参数即可。通常这时下载还会报错timeout,因此多加一个"–default-timeout=100000" 更为保险(timeout的赋值可以视情况变化)。

pip install --upgrade --default-timeout=100000 packagename -i http://pypi.douban.com/simple

当使用conda安装完pyqt5后,在pycharm中配置额外模块时发现找不到designer.exe文件
经过查资料发现,是因为我安装pyqt5时,里面不带这个pyqt5-tools文件,所以在使用conda下的pip下载pyqt5-tools即可(conda是下载不了pyqt5-tools的)
解决方法,在命令行中输入pip install PyQt5-tools -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com即可

python在虚拟解释器环境中使用pip安装第三方库出现Requirement already satisfied错误

原因是:用项目自己创建的虚拟解释器环境时,因为没有配置系统环境变量,所以找不到要安装的地址,不知道这个包要安装到那个位置。
解决办法,在安装语句中加- -target,指定安装的位置,用项目虚拟解释器环境安装的话,安装位置为项目中的虚拟环境中,默认为:

pip install --target=项目路径\项目名称\venv\Lib\site-packages 要安装的包名

例如:

pip install --target=C:\Users\xiangbin\AppData\Local\Programs\Python\Python39\Lib\site-packages  PyQt5-tools

开发第一个基于PyQt5的桌面应用

# 文龙学python
# @Time 2022/11/22 17:59

import sys

from PyQt5.QtWidgets import QApplication,QWidget

'''
鉴于这两种情况中__name__的值是不同的:当一个模块被直接执行时,其__name__必然等于__main__;当一个模块被引用时,
其__name__必然等于文件名(不含.py)。所以利用判断__name__ == '__main__'的真假就可以将这两种情况区分出来。
'''
if __name__ == '__main__':
    #创建QApplication类的实例
    app=QApplication(sys.argv)
    #创建一个窗口
    w = QWidget()
    #设置窗口的尺寸
    w.resize(300,150)
    #移动窗口
    w.move(300,300)
    #设置窗口的标题
    w.setWindowTitle('第一个基于pyqt的桌面程序')
    #显示窗口
    w.show()
    #进入程序的主循环 并通过exit函数确保主循环安全结束
    sys.exit(app.exec_())

 打开QtDesigner设计师工具

 或者

ctrl+R预览

将.ui文件转换为.py文件

方法一: python -m PyQt5.uic.pyuic demo.ui -o demo.py

生成完成 !demo.py

方法二:

python文件夹//打开pyuic5程序 -o 文件名称 直接生成demo.py

推荐 方式三

 生成完成 !demo1.py

在QtDesigner中使用布局

全选控件 右键 选择布局 为水平布局

其他布局设置方式同理 因为第二扩展菜单截图 截不到 这里请参考

 CTRL + R 预览

 

 调用源文件:RunDemo.py调用demo.py文件

PyQt5中的浏览器控件-QtWebEngine

新版本的QtDesigner里是没有WebView的,想要使用浏览器控件就需要自己安装QtWebEngine。安装之后也是没有图形界面的控件的,所以使用策略就是

用其他控件在图形界面布局,然后生成python代码之后在代码中修改

修改代码参考如下

from PyQt5 import QtWebEngineWidgets

self.webView = QtWebEngineWidgets.QWebEngineView(self.centralwidget)
self.webView.setGeometry(QtCore.QRect(300, 300, 451, 241))
self.webView.setUrl(QtCore.QUrl("https://markwannafly.blog.csdn.net/"))
self.webView.setObjectName("webView")

或者:如何在Python QT Designer中插入Web浏览器

Edit 编辑伙伴 编辑Tab顺序

 

在Qt Designer中设置信号与插槽

信号(signal)

是Qt的核心机制,也是PyQt的核心机制

信号:是由对象或者控件发射出去的消息

按钮的单击事件

当单击按钮时,按钮就会向外部发送单击消息,这些发送出去的信号需要一些代码来拦截,这些代码就是插槽上一个函数或者方法

信号可以理解为事件

槽可以理解为事件函数

需要将信号和槽绑定

一个信号可以和多个槽绑定,一个槽可以拦截多个信号

 动作编辑器

 主窗口类型

有3种窗口

QMainWindow

QWidget

QDialog

QMainWindow:可以包含菜单栏,工具栏,状态栏和标题栏

 

QDialog:是对话窗口的基类。没有菜单栏,工具栏,状态栏

QWidget:不确定窗口的用途,就使用QWidget

接下来用代码写一个程序Demo

这里分享一个在线icon制作的网站:Icon图标在线制作工具

# 文龙学python
# @Time 2022/11/22 23:14
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QIcon
class FirstMainWin(QMainWindow):
    def __init__(self):
        super(FirstMainWin,self).__init__()
        #设置主窗口的标题
        self.setWindowTitle("第一个主窗口应用")

        #设置窗口的尺寸
        self.resize(400,300)

        self.status=self.statusBar()
        self.status.showMessage("只存在5秒的消息",5000)

#只有本程序可以调用 防止其他程序调用本程序
if __name__ == '__main__':
    app=QApplication(sys.argv)

    app.setWindowIcon(QIcon('./and.png'))
    main=FirstMainWin()
    main.show()
    # 程序的主循环
    sys.exit(app.exec_())

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Spring Cloud实战】SpringCloud Sleuth分布式请求链路跟踪

gitee地址:https://gitee.com/javaxiaobear/spring-cloud_study.git 在线阅读地址:https://javaxiaobear.gitee.io/ 1、概述 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&…

HTML5期末大作业 HTML+CSS+JavaScript美食坊美食购物主题(15页)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

数据上云,如何解除用户对厂商监守自盗的担忧?

企业数字化转型中,安全从来都是企业用户最为关心和敏感的问题之一。对于数据上云,很多企业持保留态度。作为数字化转型服务商,如何解除用户对厂商监守自盗的担忧? 1.敏感的数据安全与用户的普遍认识 企业用户普遍对数据安全是极其…

湖北绝缘监测仪矿业煤炭石油金矿玉矿铁矿铜矿矿井钢厂

安科瑞 华楠 自第一次工业革命开始,人类社会进入工业时代。随着工业科技的发展,漏电流对工业生产安全构成了很大的威胁。为了提高供电的连续性、可靠性和安全性,许多重要生产场所也采用了IT配电系统(不接地供电系统)。…

使用CyberController来将旧手机改造成电脑外挂------手机交互翻译、人脸解锁、语音识别....各个功能等你来探索

文章目录前言操作PC端安装Python环境调试代码设置开机启动HMS Core API申请注册账号创建应用填写基本信息填写应用信息软件图标应用的截图应用分类API信息设置添加对应的包名勾选机器学习服务复制API信息将JSON信息保存下来安卓端安装开发工具修改源码克隆项目打开项目修改包名…

水滴邮件营销:让企业营销更简单

企业在利用邮件开发客户、推广产品的时候,最终目的是想产生转化,获得收益。邮件营销有他得天独厚的优势,它为买卖双方提供了一个交流平台,并且只要收件人同意,企业就可以长期对其进行个性化营销。这为企业积累长期忠实…

缘来交友网站的设计与实现(源码+数据库+论文+开题报告+说明文档)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

DDANet: Dual Decoder Attention Network for Automatic Polyp Segmentation

双decoder用于息肉分割。文章的创新点在与使用了双分支的decoder,单encoder的结构。decoder的第二个分支会产生注意力map,在代码中体现为输出通道为1。这个和之前看的confidence map很像。 看一下文章的结构图: 在decoder中,第二…

小米手机买什么蓝牙耳机好?适配小米手机的蓝牙耳机推荐

作为一位音乐爱好者,拥有一款好的耳机是非常重要的。无线蓝牙耳机的出现就为喜欢听音乐的伙伴们提供了一个很好的选择,既不会有耳朵的胀痛,也不会影响享受音乐的体验,小米手机近几年也是深受大众欢迎,因此,…

【数据结构Note5】-二叉排序树 BST和平衡二叉树AVL

二叉排序树BST 二叉排序树&#xff0c;又称二叉查找树&#xff08;BST&#xff0c;Binary Search Tree&#xff09; 二叉排序树是左子树节点值<根节点值<右子树节点值的二叉树 所以对二叉排序树进行中序遍历会得到一个递增的序列&#xff08;左子树-根-右子树&#xff09…

nginx实战

目录反向代理去掉前缀场景1&#xff1a;去掉一层前缀场景2&#xff1a;去掉两层前缀返回固定json增加后缀映射情况一情况二情况三情况四正向代理负载均衡正则匹配~ /item/(\d)反向代理 通过Nginx我们可以实现反向代理&#xff0c;这也是我在项目中使用到的一个功能&#xff0c…

20221122非累加的m3u8的ts切片列表的补全步骤

20221122非累加的m3u8的ts切片列表的补全步骤 2022/11/22 19:07 https://apppy87xs3b3950.h5.xiaoeknow.com/v2/course/alive/l_6374b6d0e4b0edc794f61031?type2&app_idapppy87xs3b3950&availabletrue&share_user_idu_61333670aabd8_rizBVXTg2F&share_type5&a…

从零开始的图像语义分割:FCN快速复现教程(Pytorch+CityScapes数据集)

从零开始的图像语义分割&#xff1a;FCN复现教程&#xff08;PytorchCityScapes数据集&#xff09;前言一、图像分割开山之作FCN二、代码及数据集获取1.源项目代码2.CityScapes数据集三、代码复现1.数据预处理2.代码修改3.运行结果总结参考网站前言 摆了两周&#xff0c;突然觉…

【第五部分 | JS WebAPI】6:PC端网页特效与本地存储

目录 | 概述 | PC端网页特效之三大系列 1-1 elementObj . offsetXXX 属性 1-2 elementObj . style 和 offset 的区别 1-3 案例&#xff1a;获取鼠标在某个盒子内的位置 2-1 elementObj . clientXXX 属性 3-1 elementObj . scrollXXX 属性 三大系列总结 | 动画函数封装 …

LeetCode1005. K 次取反后最大化的数组和

1 题目描述 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后&#xff0c;返回数组 可能的最大和 。 示例 1&a…

弹簧(压簧)力度计算与设计

弹簧&#xff08;压簧&#xff09;力度计算与设计弹簧的种类什么是弹性系数弹簧的材料常用材料与用途弹性系数与哪些因素有关弹簧力度设计与计算弹簧收尾设计弹簧是一种利用弹性来工作的机械零件。一般用弹簧钢制成。利用它的弹性可以控制机件的运动、缓和冲击或震动、储蓄能量…

[附源码]java毕业设计校园疫情防控管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

BMN:Boundary-matching network for temporal action proposal generation

Video Analysis 相关领域解读之Temporal Action Detection(时序行为检测) - 知乎本文投稿于 极视角 公众号&#xff0c;链接为 文章链接. 上一篇 Video Analysis相关领域解读之Action Recognition(行为识别) - 知乎专栏介绍了 Action Recognition 领域的研究进展。Action Recog…

转铁蛋白修饰纳米载体(纳米颗粒,介孔硅,四氧化三铁,二氧化硅等)

转铁蛋白又名运铁蛋白&#xff08;Transferrin&#xff0c;TRF、Tf&#xff09;&#xff0c;负责运载由消化管吸收的铁和由红细胞降解释放的铁。以三价铁复合物&#xff08;Tf-Fe3&#xff09;的形式进入骨髓中&#xff0c;供成熟红细胞的生成。转铁蛋白主要存在于血浆中&#…

vue 动态表单优秀案例

不同的下拉框 就会显示不同的表单&#xff0c;表单配置是灵活匹配的&#xff0c;还有就是 一定要知道都有哪些类型的数据做到兼容起来。 app.vue <template><a-select v-model:value"FormDataSelect" :options"FormDataSelectList" /><a-fo…