PyQt5的基本安装与使用

文章目录

    • 1. 简介
    • 2.安装
      • 2.1.QtDisigner配置
      • 2.2 PyUIC配置
      • 2.3. PyRCC配置
    • 3. 一个简单的PyQt5使用示例

1. 简介

PyQt5是一个用于创建交互式界面的Python库,它是基于Qt框架的Python绑定。Qt是一个跨平台的C++框架,用于开发图形用户界面(GUI)应用程序,它提供了丰富的功能和工具,使开发者能够轻松创建现代化、美观、可移植的应用程序。

特点:

  1. 跨平台性:PyQt5可以在各种操作系统上运行,包括Windows、Linux和macOS。
  2. 丰富的组件:PyQt5提供了大量的GUI组件,如按钮、标签、文本框、复选框、滑块等,以及各种布局管理器。
  3. 可扩展性:PyQt5是一个庞大的库,还提供了许多其他功能,如图形效果、文件操作、数据库连接等。
  4. 信号和槽机制:PyQt5使用信号和槽机制来处理事件和通信,这使得编写响应式的、交互式的程序变得更加容易。
  5. Qt Designer工具:Qt Designer是一个可视化界面设计工具,可以用来设计和布局应用程序的界面,PyQt5可以与Qt Designer配合使用。
  6. 完整的文档和社区支持:PyQt5有完善的官方文档和社区支持,提供了丰富的示例和教程,方便开发者学习和使用。

2.安装

软件:PyCharm | Python 版本:3.9 | PyQt5

pip install PyQt5
pip install pyqt5-tools
  1. pip install PyQt5:
    • 这个命令用于安装PyQt5库。PyQt5是一个用于创建交互式界面的Python库,它是基于Qt框架的Python绑定。执行此命令后,你就可以在你的Python环境中使用PyQt5来开发GUI应用程序了。
  2. pip install pyqt5-tools:
    • 这个命令用于安装PyQt5工具,包括Qt Designer等。Qt Designer是一个可视化界面设计工具,可以帮助开发者设计和布局应用程序的界面。安装了pyqt5-tools后,你可以使用Qt Designer来创建GUI界面,并将其与PyQt5一起使用。

2.1.QtDisigner配置

在Pycharm中,依次打开 File – Settings – Tools – External Tools,点击 + Create Tool,配置如下:

Name: QtDisigner

Program : C:\Users\hdxia\anaconda3\envs\pytorch_2\Lib\site-packages\qt5_applications\Qt\bin\designer.exe # 请根据实际修改

Working directory: $FileDir$

在这里插入图片描述

Qt Designer 是通过拖拽的方式放置控件,并实时查看控件效果进行快速UI设计。Qt Designer整个画面的构成:

在这里插入图片描述

2.2 PyUIC配置

PyUIC主要是把Qt Designer生成的.ui文件换成.py文件。

在Pycharm中,依次打开 File – Settings – Tools – External Tools,点击 + Create Tool,配置如下:

Name: PyUIC

Program : C:\Users\hdxia\anaconda3\envs\pyqt5env\python.exe # 当前Python目录,请根据实际修改

Arguments: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

Working directory: $FileDir$

在这里插入图片描述

2.3. PyRCC配置

PyRCC主要是把编写的.qrc资源文件换成.py文件。

在Pycharm中,依次打开 File – Settings – Tools – External Tools,点击 + Create Tool,配置如下:

Name: PyRCC

Program: C:\Users\hdxia\anaconda3\envs\pyqt5env\python.exe # 当前rcc工具目录,请根据实际修改

Arguments: $FileName$ -o $FileNameWithoutExtension$_rc.py

Working directory: $FileDir$

在这里插入图片描述

3. 一个简单的PyQt5使用示例

下面是一个简单的PyQt5使用示例,创建了一个带有按钮的窗口,点击按钮时会弹出一个消息框。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox

# 创建应用程序对象
app = QApplication(sys.argv)

# 创建窗口部件
widget = QWidget()

# 设置窗口部件的大小
widget.setGeometry(100, 100, 300, 200)

# 设置窗口部件的标题
widget.setWindowTitle('Simple PyQt5 App')

# 创建按钮
button = QPushButton('Click Me', widget)

# 设置按钮的位置和大小
button.setGeometry(100, 100, 100, 30)

# 定义按钮点击时的事件处理函数
def showMessageBox():
    QMessageBox.information(widget, 'Message', 'Button Clicked!')

# 将按钮的点击事件连接到事件处理函数
button.clicked.connect(showMessageBox)

# 显示窗口部件
widget.show()

# 运行应用程序,进入事件循环
sys.exit(app.exec_())

运行该程序,我们会得到下面的窗口
在这里插入图片描述

点击按钮,会出现如下提示
在这里插入图片描述

在上面代码中,

  1. import sys: 导入sys模块,用于处理与Python解释器交互的标准功能。
  2. from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox: 导入PyQt5的QtWidgets模块中所需的类,包括应用程序类QApplication、窗口部件类QWidget、按钮类QPushButton和消息框类QMessageBox
  3. app = QApplication(sys.argv): 创建一个应用程序对象。sys.argv是一个传递给Python脚本的命令行参数列表,QApplication对象使用这些参数来初始化应用程序。
  4. widget = QWidget(): 创建一个窗口部件。
  5. widget.setGeometry(100, 100, 300, 200): 设置窗口部件的位置和大小。
  6. widget.setWindowTitle('Simple PyQt5 App'): 设置窗口部件的标题。
  7. button = QPushButton('Click Me', widget): 创建一个按钮,并将其父对象设置为窗口部件。这样按钮就会显示在窗口中。
  8. button.setGeometry(100, 100, 100, 30): 设置按钮的位置和大小。第一个参数 100 是窗口部件的 x 坐标,即窗口左上角相对于屏幕左上角的水平位置。第二个参数 100 是窗口部件的 y 坐标,即窗口左上角相对于屏幕左上角的垂直位置。第三个参数 300 是窗口部件的宽度,即窗口的水平尺寸。第四个参数 200 是窗口部件的高度,即窗口的垂直尺寸。因此,widget.setGeometry(100, 100, 300, 200) 表示窗口部件的左上角位于屏幕上 x 坐标为 100,y 坐标为 100 的位置,宽度为 300 像素,高度为 200 像素。
  9. def showMessageBox(): ...: 定义了一个名为showMessageBox()的函数,用于处理按钮点击事件。当按钮被点击时,会弹出一个消息框。
  10. button.clicked.connect(showMessageBox): 将按钮的clicked信号连接到showMessageBox()函数,这样当按钮被点击时,showMessageBox()函数就会被调用。
  11. widget.show(): 显示窗口部件。
  12. sys.exit(app.exec_()): 运行应用程序,进入事件循环。app.exec_()开始Qt的事件循环,直到app.exit()被调用,或者主窗口被关闭。sys.exit()确保程序在退出时返回一个正确的状态码。

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

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

相关文章

4.26.7具有超级令牌采样功能的 Vision Transformer

Vision Transformer在捕获浅层的局部特征时可能会受到高冗余的影响。 在神经网络的早期阶段获得高效且有效的全局上下文建模: ①从超像素的设计中汲取灵感,减少了后续处理中图像基元的数量,并将超级令牌引入到Vision Transformer中。 超像素…

源代码加密的重要性

在数字化时代,企业面临的最大挑战之一是如何保护其核心数据不被泄露。企业源代码防泄密是指企业采取措施保护其软件或应用程序源代码不被未授权的人员获取、泄露或盗用的一种安全措施。源代码是软件的核心组成部分,其中包含了程序员编写的具体指令和算法…

MySQL深入理解MVCC机制(详解)

深入理解MVCC 1、MVCC定义 MVCC:Multi-Version Concurrency Control,多版本并发控制机制。 在mysql中,为了满足事务的四大特性之一的隔离性,就是当前事务中的查询的数据不受其他事务的增删改操作的影响,因此mysql主要是通过这个…

怎么解决端口被占用

目录 一、引言 二、解决方法 一、引言 最近用vscode写网页,老是遇见端口被占用,报错如下: listen tcp :8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. 二、解决方法 1.换…

Apache DolphinScheduler 3.3.0 版本重磅更新提前看!

Apache DolphinScheduler 3.3.0版本终于要在万众期待中发布啦!本次发版将有重大功能更新,包括架构上的调整。 为了让广大用户提前尝鲜,社区特别准备了直播活动提前揭秘3.3.0版本中的重要更新,到时候你将会了解到这些信息&#xf…

苹果平板HOME键成历史,全面屏时代到来?2024平板电脑市场趋势分析

近期苹果公司在“放飞吧”发布会上推出了新款iPad Pro和iPad Air平板电脑,并下架了最后一款带有实体Home按键的iPad 9。这一变化标志着Home键在苹果iPad产品线中成为了历史,引起了不少网友的怀念和感慨。 与此同时,今年3月线上平板电脑市场迎…

分析:Palo Alto在从SASE向SASO演进中定位不佳

摘要 我们通过上一篇文章(Fortinet的愿景——超越SASE)中应用于Fortinet的相同框架来回顾Palo Alto Network在网络和网络安全方面的前景。 SASE涉及数据传输的第一英里。不过,随着SASE的发展,投资者还需要考虑中间和最后一英里。…

QLabel 如何同时显示图片和文字?

效果: align="top"表示图片和文字底部对齐。 img src=":/img/qrc_img.png"表示此图片被添加到qrc的相对路径。 完整: QString content =QString("<html><head/><body><p><img src=\":/img/qrc_img.png\"…

【linux kernel】linux内核hid触摸源码hid-multitouch.c剖析

文章目录 一、内核中通用hid触摸驱动二、probe过程剖析(1)hid_parse()函数(2)hid_hw_start()函数(3)hid_connect()函数三、hid-multitouch.c应用场景一、内核中通用hid触摸驱动 在linux内核中,为HID触摸面板实现了一个通用的驱动程序,位于/drivers/hid/hid-multitouch.c文件…

【高阶数据结构】图--邻接矩阵、邻接表、BFS、DFS、Kruskal、Prime

图--邻接矩阵、邻接表、BFS、DFS、Kruskal、Prime 一、图的概述1、概述&#xff08;纯理论部分&#xff09;2、邻接矩阵&#xff08;实现一个添加边的图&#xff09;&#xff08;1&#xff09;思路介绍&#xff08;2&#xff09;代码部分&#xff08;3&#xff09;测试部分 3、…

pytest教程-40-钩子函数-pytest_runtest_call

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 上一小节我们学习了pytest_runtest_setup钩子函数的使用方法&#xff0c;本小节我们讲解一下pytest_runtest_call钩子函数的使用方法。 pytest_runtest_call 钩子函数在 pytest 调用测试函数&#xff08;即测试用…

JAVA栈相关习题3

1.将递归转化为循环 比如&#xff1a;逆序打印链表 // 递归方式void printList(Node head){if(null ! head){printList(head.next);System.out.print(head.val " ");}} // 循环方式void printList(Node head){if(nullhead){return;}Stack<Node> snew Stack<…

将大概的流程具体还是看源码

之前看源码的时候呢没有文字整理&#xff0c;想来还是写一个大概的流程吧&#xff0c;具体是无法用文字描述 spring源码真的yyds&#xff0c;数据结构 反射 父子类 接口…玩得溜到飞起 博大精深呐 后期不断喜欢ing&#xff01; springApplication.run方法 获取了一个Configu…

STC8增强型单片机开发——库函数

一、使用库函数点灯 导入库函数。 下载STC8H的库函数&#xff1a;&#x1f4ce;STC8G-STC8H-LIB-DEMO-CODE_2023.07.17_优化版.zip 来到库函数的目录下&#xff0c;拷贝以下文件&#xff1a; Config.hType_def.hGPIO.hGPIO.c 新建项目&#xff0c;将拷贝的4个文件放到项目目录…

【管理咨询宝藏96】企业数字化转型的中台战略培训方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏96】企业数字化转型的中台战略培训方案 【格式】PDF版本 【关键词】SRM采购、制造型企业转型、数字化转型 【核心观点】 - 数字化转型是指&…

代码审计-php篇之某CRM系统多处sql注入

&#x1f31f; ❤️ 作者&#xff1a;yueji0j1anke 首发于公号&#xff1a;剑客古月的安全屋 字数&#xff1a;3516 阅读时间: 35min 声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果…

科沃斯,「扫地茅」荣光恐难再现

作者 | 辰纹 来源 | 洞见新研社 科沃斯恐怕已经很难再回到被市场誉为“扫地茅”时的荣光了。 不久前&#xff0c;科沃斯发布2023年财报&#xff0c;报告期内营业收入155亿&#xff0c;同比仅增长1.16%&#xff0c;归母净利润6.12亿元&#xff0c;同比下降63.96%&#xff0c;直…

【北京迅为】《iTOP-3588开发板快速烧写手册》-第11章 救砖方法

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

pycharm中导入rospy(ModuleNotFoundError: No module named ‘rospy‘)

1. ubuntu安装对应版本ros ubuntu20.04可参考&#xff1a; https://wiki.ros.org/cn/noetic/Installation/Ubuntuhttps://zhuanlan.zhihu.com/p/515361781 2. 安装python3-roslib sudo apt-get install python3-roslib3.在conda环境中安装rospy pip install rospkg pip in…

重定向_缓冲区

目录 重定向 文件属性操作 浅谈重定向​编辑 深入重定向 dup2 缓冲区 缓冲区的理论理解 代码分析 重定向 文件属性操作 #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> int stat(const char *path, struct stat *buf); int fstat(i…
最新文章