PyQt5的基本安装与使用

news2025/2/27 14:29:12

文章目录

    • 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.coloradmin.cn/o/1653841.html

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

相关文章

智慧工厂管理系统

随着科技的飞速发展,传统工厂正经历着一场前所未有的变革。在这个以智能化、信息化为主导的新时代,HiWoo Cloud平台以其卓越的智慧工厂管理系统,成为了众多企业转型升级的首选工具。今天,就让我们一起走进HiWoo Cloud的世界&#…

vue3实现电子签名的方法

vue3实现电子签名且对电子签名可进行修改画笔粗细、画笔颜色、撤销、清屏、保存等功能。 实现效果&#xff1a;查看源码 第一种&#xff1a;通过canvas <div class"signaturePad-Box w100 h100 flex-center"><el-space class"mb10" size"…

【牛客】值周

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 差分。 因为l<100000000,所以数组开1e8。 唯一需要注意的点就是前面给b[0]单独赋值为1&#xff08;因为如果在循环中给b[0]赋值&…

Day22 代码随想录打卡|字符串篇---实现 strStr()

题目&#xff08;leecode T28&#xff09;&#xff1a; 给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1…

Matlab实现分段函数拟合(分段点未知)| 源码分享 | 视频教程 | 三种分段函数拟合方法

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

2024vue官方生态最全整理

👩 个人主页:程序媛夏天 🙋‍♂️ 作者简介:前端领域新星创作者、CSDN内容合伙人、自媒体职场博主,专注于前端各领域技术,成长的路上共同学习共同进步,一起加油呀! ✨系列专栏:前端面试宝典、JavaScript进阶、vue实战 📢 资料领取:前端进阶资料以及文中源码可以在…

解放双手,利用自动点赞软件提高曝光度

在数字时代&#xff0c;社交媒体如同一片繁茂的森林&#xff0c;每一条动态、每一张照片都是树上挂着的果实&#xff0c;而点赞则仿佛是那些吸引眼球的色彩。在这个以流量为王的网络世界里&#xff0c;点赞数往往与内容的可见度直接相关&#xff0c;它不仅能够增加帖子的权重&a…

Python 框架安全:Django SQL注入漏洞测试.(CVE-2021-35042)

什么是 Django 框架 Django 是一个用 Python 编写的 Web 应用程序框架。它提供了许多工具和库&#xff0c;使得开发 Web 应用程序变得更加容易和高效。Django 遵循了“MTV”&#xff08;模型-模板-视图&#xff09;的设计模式&#xff0c;将应用程序的不同组件分离开来&#x…

【Git】Git学习-16:git merge,且解决合并冲突

学习视频链接&#xff1a; 【GeekHour】一小时Git教程_哔哩哔哩_bilibili​编辑https://www.bilibili.com/video/BV1HM411377j/?vd_source95dda35ac10d1ae6785cc7006f365780 1 创建分支dev&#xff0c;并用merge合并master分支&#xff0c;使dev分支合并上master分支中内容为…

减速机齿数速算

1.齿轮相关参数 1.1 模数 &#xff0c; 因为 齿数*齿距 Pi*直径 所以&#xff1a;直径/齿数 齿距/PI 模数 国标现行标准&#xff08;截止2024/5&#xff09;是&#xff1a; GB/ 1357-2008 / ISO 54-1996 模数有国标的一个序列标准&#xff1a; 1.2.轴径 轴径的国标是&a…

【OceanBase 系列】—— OceanBase v4.3 特性解读:查询性能提升之利器列存储引擎

原文链接&#xff1a;OceanBase 社区 对于分析类查询&#xff0c;列存可以极大地提升查询性能&#xff0c;也是 OceanBase 做好 HTAP 和 OLAP 的一项不可缺少的特性。本文介绍 OceanBase 列存的实现特色。 OceanBase从诞生起就一直坚持LSM-Tree架构&#xff0c;不断打磨功能支…

智慧公厕方案_智慧公厕解决方案_智慧公厕整体解决方案_智慧公厕系统_智慧公厕管理系统

随着智能科技的不断发展&#xff0c;智慧公厕已经成为城市建设的重要组成部分。智慧公厕系统以其高效、智能、便捷的特点&#xff0c;受到了人们的广泛关注和好评。本文将以智慧公厕源头实力厂家广州中期科技有限公司&#xff0c;大量精品案例项目现场实景实图实例&#xff0c;…

源代码烧录场景防泄密的四种方式

在各行各业中&#xff0c;外设烧录是一项常见的操作&#xff0c;涉及到对硬件设备进行固件更新或配置文件的写入。然而&#xff0c;外设烧录过程中的文件管理和安全审计一直是一个挑战&#xff0c;传统的烧录方法往往无法提供足够的安全保障。本文将介绍如何利用沙盒防泄密软件…

【驱动】I2C读写时序

1、I2C总线 I2C使用两条线在主控制器和从机之间通信,SCL(串行时钟线)和SDA(串行数据线),这两条线需接5~10欧上拉电阻,总线空闲空闲时,SCL和SDA处于高电平,I2C总线标准模式速度可以达到100K/S,快速模式可以达到400K/S。 2、状态 I2C总线有四种状态:空闲、启动、忙碌、…

【MM32F3270火龙果】keil安装MM32F3270

文章目录 前言一、下载pack包二、安装pack三、keil选择MM32F3270 cpu四、编译烧写总结 前言 在嵌入式系统开发中&#xff0c;选择适合的开发工具和微控制器平台至关重要。本文将介绍如何在Keil开发环境中安装和配置MM32F3270火龙果微控制器的开发环境。MM32F3270火龙果是一款功…

Java_从入门到JavaEE_11

一、抽象类及抽象方法 1.认识抽象类及抽象方法 应用场景&#xff1a;当一个方法必须在父类中出现&#xff0c;但是这个方法又不好实现&#xff0c;就把该方法变成抽象方法&#xff0c;交给非抽象的子类去实现 实例&#xff1a; //抽象类 public abstract class 类名{//抽象方…

svg画扇形进度动画

有人问下面这种图好怎么画&#xff1f;svg 想了下&#xff0c;确实用svg可以&#xff0c;可以这么设计 外层是一个容器放置内容&#xff0c;并且设置overflow:hidden&#xff0c; 内层放一个半径大于容器宽高一半的svg&#xff0c;并定位居中&#xff0c;然后svg画扇形&#x…

STM32系统架构

以下是STM32系统架构中的各个重要组件和功能&#xff1a; 组件描述Cortex-M内核ARM Cortex-M系列内核&#xff0c;如M0、M0、M3、M4、M7等Flash存储器存储程序代码和数据SRAM存储程序运行时数据和堆栈外设接口GPIO、SPI、I2C、UART、TIM、ADC、DAC、USB、CAN、Ethernet等时钟和…

同一局域网如何从Windows系统拷贝文件到银河麒麟系统

1. 先将Windows下的、被拷贝文件所在文件夹设置为共享目录&#xff1a;在文件夹上单击右键选择“属性”菜单&#xff0c;弹出如下对话框&#xff1a; 按数字顺序单击鼠标左键&#xff0c;弹出如下对话框&#xff1a; 并将权限开放为Everyone&#xff0c;单击“共享”按钮。 在…

sed小实践2(随手记)

删除/etc/passwd的第一个字符 #本质是利用sg替换&#xff0c;将第一个字符替换成空 sed s|^.||g /etc/passwd删除/etc/passwd的第二个字符 sed -r s|^(.).(.*$)|\1\2|g /etc/passwd sed -r s|^(.).|\1|g /etc/passwd删除/etc/passwd的最后一个字符 sed s|.$||g /etc/passwd删…