python PyQt5的学习

一、安装与配置

1、环境:

python3.7+

2、相关模块

pip install pyqt5 pyqt5-tools pyqt5designer

可以加个镜像

-i https://pypi.tuna.tsinghua.edu.cn/simple

3、配置设计器

python的pyqt5提供了一个设计器,便于ui的设计

界面是这样的:

只需要在这个设计器中将控件移动到窗口中即可。

常用的控件有:

pushButton:点击按钮

listWidget:显示多行文字

graphicsWidget:显示图片

lineEdit:单行文字

label:标签

以下为具体配置过程:
(1)在pycharm中点击设置(settings):

(2)找到External Tools扩展工具

添加两个功能

Qt Designer :它的功能是打开设计器

program:选择:

working directory:功能是将设计器生成的ui文件转换成py文件

$ProjectFileDir$

Pyuic

program选择:

working directory:

$ProjectFileDir$

完成以后:

注意:项目文件的路径中不要出现中文,否则会报错

二、设计ui的思路

我个人设计ui时偏好通过main.py启动主页面(ui.py)进入其他的功能页面

如:

框架为:

——main.py:启动代码

——ui.py(ui.ui使用Pyuic转换而来):主页面

——music.py ,data.py,crawl.py,text.py(相应的.ui文件转换而来):功能页面

——sheet(文件夹):存放美化设计的图片:

eg:

以及背景、字体等:

三、代码编写

由于ui.py和其他功能代码文件都可以通过设计器来设计并转换成py文件,所以只需要保证拖放美观即可,并没有难度,关键在于实现逻辑的主代码main.py部分

1、导入包

QtGui,QtCore,QtWidgets中含有pyqt5库中重要控件的函数引入等。

然后我分别从ui中引入了MainWindow的类

2、初始化

main.py中调用页面时需要重新初始化,每个都要

格式为:
 

class MainWindow1(QtWidgets.QMainWindow):def __init__(self, parent=None):super(MainWindow1, self).__init__(parent)self.ui = Ui_MainWindow1()self.ui.setupUi(self)

3、添加逻辑

在初始化后直接添加代码核心的逻辑

4、主函数启动

if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)mainwindow = MainWindow1()mainwindow.show()sys.exit(app.exec_())

四、几个常用功能

pyqt5的函数非常多,不可能全部用到,这里分享几个我在ui设计中常用到的几个

1、打开窗口

在初始化的后面加上

 self.ui.pushButton1.clicked.connect(self.open_2)

然后在类中定义一个函数

    def open_2(self):self.st2=MainWindow2(self)self.st2.show()

即当点击按钮时可打开另一个界面

注意!!!这里pushButton的命名要记清,这里是pushButton1

2、返回主界面

这里不能用打开主界面的方式来返回,因为主界面是其他功能界面的父界面

self.ui.pushButton2.clicked.connect(self.back)  def back(self):self.close()  # 关闭当前窗口self.parent().show()  # 显示主窗口

3、选择文件夹

以选择图像文件为例,如有其他文件,只需在getOpenFileName中改文件后缀即可

self.ui.toolButton1.clicked.connect(self.bind_list)def bind_list(self):file_path, _ = QFileDialog.getOpenFileName(None, "选择图像", os.getcwd(), "图像文件 (*.png *.jpg *.bmp)")self.current_image_path = file_path  # 保存选定的文件路径if file_path:self.show_image(file_path)

看下效果


点击后:

4、美化

直接在初始化后添加:

可以增加窗口图标和按键图标

#可视化icon = QIcon('sheet/click.png')self.ui.pushButton1.setIcon(icon)self.ui.pushButton2.setIcon(icon)self.ui.pushButton3.setIcon(icon)# 设置窗口图标Qicon = QIcon('sheet/img2.png')  # 替换为你的图标文件路径self.setWindowIcon(Qicon)

另外给大家分享一个ui设计中的图标网站ui设计图标,里面的资源很丰富,好看精简。

五、总结

        其实python ui设计的难度并不高,要设计出一个简易的框架很容易,而pyqt5的实际最广泛的用途是与一些功能相结合,比如代码复现时通过点击按钮能够实现运行某个启动代码,在这个过程中需要用到的就是subprocess这个库,还有环境配置的很多问题,核心问题比如信号与槽的使用,我后续会在专栏中更新一些设计实例,大家可以订阅专栏内容来具体学习如何解决一些问题。

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

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

相关文章

springboot实现微信小程序授权登录前后端代码完整版

一个简单的微信授权登录的demo&#xff0c;我这边没有建表&#xff0c;是存到redis里面了&#xff0c;仅供参考&#xff0c;后续可以扩展自己的业务逻辑&#xff0c;把登录信息存在表里面。 前端小程序代码&#xff1a; <view><view class"login-icon">…

ABAP - 读取长文本优化

做程序优化的时候发现在循环里面读取长文本&#xff0c;用&#xff08;READ_TEXT\类的方法&#xff09;读取太消耗性能了&#xff0c;于是用读取底表的方法去取。 DATA lt_stxl_raw TYPE TABLE OF ty_stxl_raw.DATA ls_stxl_raw TYPE ty_stxl_raw.DATA lt_tline TY…

MFC为资源对话框添加消息处理函数和初始化控件

现在我VC6新建了一个对话框工程&#xff1b;又在资源添加了一个新的对话框&#xff0c;并为新的对话框添加了名为CTestDlg的类&#xff1b; 在主对话框的cpp文件包含#include "TestDlg.h"&#xff1b; 在主对话框的cpp文件的OnInitDialog()成员函数中&#xff0c;添…

算法之回溯动态规划贪心

回溯使用场景&#xff1a;求出所有可能的解。 List result; void backtrack(路径,选择列表){if(满足结束条件){result.add(路径);return;}for(选择:选择列表){// 遍历集合中的元素做选择;backtrack(路径,选择列表);撤销选择;} }动态规划使用场景&#xff1a;寻求最优解。 #初…

单列的堆叠柱状图

目的 MSingleColumnStackBarChart类被设计用于创建只有单列的堆叠柱状图&#xff0c;用于血糖数据的统计。以下是封装这个类的目的的详细描述&#xff1a; 抽象复杂性&#xff1a; 通过创建MSingleColumnStackBarChart类&#xff0c;你将复杂的MPAndroidChart库的使用和配置封…

12166 - Equilibrium Mobile (UVA)

题目链接如下&#xff1a; Online Judge 一个很简洁的写法&#xff1a;UVa 12166 Equilibrium Mobile——思路题_equilibrium mobile uva - 12166-CSDN博客 才33行&#xff0c;真的NB坏了…… 我的比较繁琐的代码&#xff08;能AC&#xff09;&#xff0c;比较之下就能发现…

VUE---组件的样式冲突scoped

默认情况 &#xff1a;写在组件中的样式会 全局生效 &#xff0c;因此很容易造成多个组件之间的样式冲突问题。 1、 全局样式 &#xff1a; 默认组件中的样式会作用到全局 2、 局部样式 &#xff1a; 可以给组件加上 scoped 属性&#xff0c; 让样式只作用于当前组件 sc…

FastGPT + Xinference + OneAPI:一站式本地 LLM 私有化部署和应用开发

Excerpt 随着 GPTs 的发布,构建私有知识库变得无比简易,这为个人创建数字化身份、第二大脑,或是企业建立知识库,都提供了全新的途径。然而,基于众所周知的原因,GPTs 在中国的使用依然存在诸多困扰和障碍。因此,在当… 随着 GPTs 的发布,构建私有知识库变得无比简易,这…

React全局状态管理

redux是一个状态管理框架&#xff0c;它可以帮助我们清晰定义state和处理函数&#xff0c;提高可读性&#xff0c;并且redux中的状态是全局共享&#xff0c;规避组件间通过props传递状态等操作。 快速使用 在React应用的根节点&#xff0c;需要借助React的Context机制存放整个…

深入探讨 Go 语言中的 Map 类型

深入探讨 Go 语言中的 Map 类型 Go 语言中的 map 类型是一种非常强大且常用的数据结构&#xff0c;它提供了一种键值对的映射关系。本篇博客将深入讨论 Go 中的 map 类型&#xff0c;包括其基本用法、特性、以及一些最佳实践。 基本概念 1. 声明和初始化 在 Go 中&#xff…

mobi文件怎么转换成pdf?

mobi文件怎么转换成pdf&#xff1f;在数字化时代&#xff0c;电子书籍成为了越来越受欢迎的阅读方式。我们可以通过多种格式的电子书来获取知识和娱乐&#xff0c;其中一种常见的格式就是Mobi文件。Mobi文件是亚马逊公司开发的一种电子书格式&#xff0c;它主要用于Kindle设备和…

SL4010升压恒压电源芯片DC3.7V升压5V、12V、24V/5A

SL4010是一款升压恒压电源芯片&#xff0c;可以将DC3.7V的输入电压升压至5V、12V或24V的输出电压&#xff0c;并可提供高达5A的输出电流。这款芯片采用了先进的升压技术&#xff0c;能够实现高效、稳定的电压转换&#xff0c;同时还具有低噪声、低功耗和低成本等优点。在各种需…

【论文阅读】Consistency Models

文章目录 IntroductionDiffusion ModelsConsistency ModelsDefinitionParameterizationSampling Training Consistency Models via DistillationTraining Consistency Models in IsolationExperiment Introduction 相比于单步生成的模型&#xff08;例如 GANs, VAEs, normalizi…

推荐几个Github高星GoLang管理系统

在Web开发领域&#xff0c;Go语言&#xff08;Golang&#xff09;以其高效、简洁、高并发等特性逐渐成为许多开发者的首选语言。有许多优秀的Go语言Web后台管理系统&#xff0c;这些项目星星众多&#xff0c;提供了丰富的功能和良好的代码质量。本文将介绍一些GitHub高星的GoLa…

学会这个昼夜系统,你也能做出一款饥荒生存类游戏DEMO!

学会这个昼夜系统&#xff0c;你也能做出一款饥荒生存类游戏DEMO&#xff01; 《饥荒》作为生存类游戏的老大哥&#xff0c;深受大家喜爱&#xff0c;这款游戏于2012年年底正式公测上线&#xff0c;距今已有10年的时间&#xff0c;从最初的单机版慢慢推出了联机版&#xff0c;…

Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务

技术背景 我们在对接Unity下推送模块的时候&#xff0c;遇到这样的技术诉求&#xff0c;开发者希望在Android的Unity场景下&#xff0c;获取到前后摄像头的数据&#xff0c;并投递到RTMP服务器&#xff0c;实现低延迟的数据采集处理。 在此之前&#xff0c;我们已经有了非常成…

大模型学习之书生·浦语大模型5——基于LMDeploy大模型量化部署实践

目录 大模型部署背景 LMDeploy部署 量化 TurboMind API server 动手实践环节

LCR 173. 点名(二分)

一、题目描述 LCR 173. 点名 某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席&#xff0c;请返回他的学号。 示例 1: 输入: records [0,1,2,3,5] 输出: 4示例 2: 输入: records [0, 1, 2, 3, 4, 5, 6, 8] 输出: 7 二、题目解析…

flink1.14.5使用CDH6.3.2的yarn提交作业

使用CDH6.3.2安装了hadoop集群&#xff0c;但是CDH不支持flink的安装&#xff0c;网上有CDH集成flink的文章&#xff0c;大都比较麻烦&#xff1b;但其实我们只需要把flink的作业提交到yarn集群即可&#xff0c;接下来以CDH yarn为基础&#xff0c;flink on yarn模式的配置步骤…

2024-01-16 创业日记-关于用户需求分析-思考

摘要: 创业公司一个非常大的问&#xff0c;就是制造的产品没有市场。创始人所设想的需求&#xff0c;不是真正的市场上所缺失的&#xff0c;导致开发出的产品不被市场认可。 那么需求是如何确定的呢&#xff1f;需求是怎么来的呢&#xff1f;自己所设想的用户需求&#xff0c…