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: QtDisignerProgram : 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: PyUICProgram : C:\Users\hdxia\anaconda3\envs\pyqt5env\python.exe # 当前Python目录,请根据实际修改Arguments: -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.pyWorking directory: $FileDir$

在这里插入图片描述

2.3. PyRCC配置

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

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

Name: PyRCCProgram: C:\Users\hdxia\anaconda3\envs\pyqt5env\python.exe # 当前rcc工具目录,请根据实际修改Arguments: $FileName$ -o $FileNameWithoutExtension$_rc.pyWorking 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.mzph.cn/bicheng/8682.shtml

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

相关文章

scala速通(精简版)

1.变量和常量 var name [:VariableType] value // variable val name [:ConstantType] value // constant1.声明变量时,类型可以省略 2.类型定义后就不能修改言 3.变量声明必须有初始值 4.变量,常量分别用var,val声明修饰 2.标识符命名…

识货小程序逆向

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872,x30184483x…

仓库管理系统需求调研要点

仓库管理系统需求调研 一、仓库的作用 仓库分类 原材料仓库:用于存放生产所需的原材料和零部件,需要保持原材料的质量和数量稳定。半成品仓库:存放生产过程中的半成品和在制品,需要保持良好的生产流程和及时出库。成品仓库&#x…

05-08 周三 FastBuild FastAPI 引入并发支持和全局捕获异常

时间版本修改人描述2024年5月8日20:41:03V0.1宋全恒新建文档 简介 由于FastBuild之前花费了大概5天的时间优化,但最近重新部署,又发现了一些问题,就很痛苦,五一之后,自己又花了三天的时间系统的进行了优化。 上一波优…

【R语言】生存分析模型

生存分析模型是用于研究时间至某个事件发生的概率的统计模型。这个事件可以是死亡、疾病复发、治疗失败等。生存分析模型旨在解决在研究时间相关数据时的挑战,例如右侧截尾(右侧截尾表示未观察到的事件发生,例如研究结束时还未发生事件&#…

2024年第七届人工智能和模式识别国际会议(AIPR 2024)即将召开!

2024年第七届人工智能和模式识别国际会议(AIPR 2024)将于2024年9月20-22日在福建厦门市的华侨大学举行。探索AI边界,解锁识别新境界!AIPR 2024旨在促进模式识别与机器学习, 计算机视觉与机器人视觉, 图像、语音、信号和视频处理等领域尖端成果…

星辰考古:TiDB v1.0 再回首

“ 1.0 版本只是个开始,是新的起点,愿我们一路相扶,不负远途。 前言 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库。 近日,TiDB v8.0.0 DMR 发布,详细发版说明戳这里: https://docs.pingca…

Java | Spring框架 | @Autowired与@Resource

在Spring框架中,依赖注入是一种核心概念,它允许开发者将对象的创建和对象之间的依赖关系的管理交给框架来处理。这样做的目的是为了提高代码的模块化和可测试性。 Spring提供了多种方式来实现依赖注入,其中最常用的方式是通过注解。在本文中…

uniapp + vue3 设置 axios proxy 代理,并重写路径

uniapp vue2 设置代理如下: 已生成的项目架构里面找到manifest.json文件,通过源码视图的方式打开文件,在文件中添加一下代码即可完成代理: "h5": {"devServer": {"disableHostCheck": true, //禁…

linux部署java1.8(jdk1.8)

两种方式: 方式一 1.输入查找命令: yum -y list java*2.输入安装命令: yum install -y java-1.8.0-openjdk.x86_643.测试是否已经安装: java -version方式二: 点击链接进入官网:https://www.oracle.com/…

Python 全栈体系【四阶】(四十一)

第五章 深度学习 九、图像分割 1. 基本介绍 1.1 什么是图像分割 图像分割(Segmentation)是图像处理和机器视觉一个重要分支,其目标是精确理解图像场景与内容。图像分割是在像素级别上的分类,属于同一类的像素都要被归为一类&a…

ReactFlow的ReactFlow实例事件传参undefined处理状态切换

1.问题 ReactFlow的ReactFlow实例有些事件我们在不同的状态下并不需要,而且有时候传参会出现其它渲染效果,比如只读状态下我们不想要拖拉拽onEdgesChange连线重连或删除的功能。 2.思路 事件名称类型默认值onEdgesChange(changes: EdgeChange[]) >…

pandas快速使用

DataFrame介绍 Dateframe结构和列表类似,区别是对于DataFrame的每一列和每一行均有一个标签。例如以下数据, 上述数据中,日期作为每行的标签。a、b、c、d、e分别是每列的标签 生成连续日期数据 使用方法date_range(),该方法有两…

平平科技工作室-Python-超级玛丽

一.准备图片 放在文件夹取名为images 二.准备一些音频和文字格式 放在文件夹media 三.编写代码 import sys, os sys.path.append(os.getcwd()) # coding:UTF-8 import pygame,sys import os from pygame.locals import* import time pygame.init() # 设置一个长为1250,宽为…

MySQL部署系列-centos离线安装MySQL

MySQL部署系列-centos离线安装MySQL 文章目录 MySQL部署系列-centos离线安装MySQL1. 查看是否已经安装 Mysql3. 下载官方 Mysql 包3. 下载之后上传到服务器4. 创建用户组5. 创建数据目录并赋予权限6. 修改配置文件 vim /etc/my.cnf7. 初始化数据库(数据库安装)8. 加入到系统服务…

【3dmax笔记】035: 车削修改器

一、车削修改器介绍 车削:图形通过绕轴旋转来创建三维效果。 开放的样条线,车削之后是面片。闭合的样条线,车削之后,是实体。 一、车削修改器实例 绘制高脚杯,首先在前视图绘制如下二维图形。 添加一个车削的修改器…

(六)JSP教程——out对象

out对象是在JSP中经常使用到的对象,它本质上是一个输出流,前面已经多次使用,我们经常使用它的print()和println()方法,这些方法主要用于实现客户端数据的输出。通过out对象也可以直接向客户端发送一个由程序动态生成的HTML文件。 …

关于YOLO8学习(三)训练自定义的数据集

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 简介 本文将会讲解: (1)如何通过PyCharm,进行训练数据,实现人脸检测 开发环境 win10、python 3.11、cmake、pytorch2.0.1+cu117、pycharm、ultralytics==8.0.134 要特…

牛客NC97 字符串出现次数的TopK问题【中等 哈希+优先级队列 Java/Go】

题目 题目链接: https://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee 核心 哈希,优先级队列Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返…

[力扣]——387.字符串中的第一个唯一字符

. - 力扣&#xff08;LeetCode&#xff09; class Solution {public int firstUniqChar(String s) {int[] count new int[256];// 统计每个字符出现的次数for(int i 0; i < s.length(); i){count[s.charAt(i)];}// 找第一个只出现一次的字符for(int i 0; i < s.lengt…