【Python】基于界面库PyQt5+Qt Dsigner的环境配置和界面绘制

目录

一 安装PyQt5以及PyQt5-tools

二 配置外部开发工具

三 使用Qt Designer设计界面

四 使用PyUIC将ui文件转换为py文件

五 CU分离实现逻辑代码


一 安装PyQt5以及PyQt5-tools

        之前做的一些Python脚本、软件都是基于 Tkinter 实现的,其中界面的设计布局是很头疼的事情,都得自己手动敲。了解到 PyQt5 + Qt Designer 可以通过可视化界面,拖拽控件的形式简单完成界面的设计,颇为心动,遂尝试使用。

【1】安装PyQt5

        通过命令行管道输入命令 pip install PyQt5。或者在Pycharm中搜索安装:

【2】安装PyQt5-tools

        通过命令行管道输入命令 pip install PyQt5-tools。或者在Pycharm中搜索安装:

二 配置外部开发工具

        进入 File→Settings→Tools→External Tools,点击+号,新建两个外部工具:QTDesigner 和 PyUIC:

【1】配置QTDesigner:

        其中:

Name:QTDesigner

Program:C:\Python38\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
                注意:该路径为Python安装路径Lib\site-packages\qt5_applications文件夹里

Working dirctory:C:\Python38\Lib\site-packages\qt5_applications\Qt\bin

                注意:$FileDir$ 亦可

【2】配置PyUIC:

        其中:

Name:PyUIC

Program:C:\Python38\Scripts\pyuic5.exe
                  注意:该路径为你Python安装路径下Scripts文件夹里

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

Working dirctory:$FileDir$

三 使用Qt Designer设计界面

        配置完成之后,点击Tools→External Tools→QTDesinger,进入设计界面:

        在New Form对话框里选择Widget模板,然后点击创建:

        然后就会出现Qt Designer主界面,向Form中分别拖入一个“Push Button”和一个“Text Edit”,如下图:

        

        指定点击事件及其响应函数。工具栏点击对象图标:

        然后光标移动到“PushButton”按钮上,鼠标左键 点击 “PushButton”按钮 不要松开,拖动光标 到 按钮旁边的任一位置后 再松开鼠标左键,会出现一个类似接地的图标

        随后就出现了如下界面,在对话框左侧选中clicked()”,右侧点击“Edit”,配置连接如下:

        新增一个名为 pushButton_click() 的槽:

        保存并退出 QTDesinger。

四 使用PyUIC将ui文件转换为py文件

        Python并不能识别Qt Designer生成的.ui文件,需要使用外部工具PyUIC将其转换为.py文件:

        生成结束之后,同级目录下会出现一个同名的.py文件,这个文件就可以直接使用了:

五 CU分离实现逻辑代码

        运用CU分离的思想,将界面与业务逻辑分开实现。方法是新建一个.py文件程序(我这边直接用自动生成的main.py),在里边创建一个子类(My_Ui_Form)继承testUI.py中的Ui_Form。

优点1:实现逻辑清晰;
优点2:后续如果界面或者逻辑需要变更,好维护;

        代码如下:

"""
界面与业务逻辑分离实现:新建一个.py文件程序,在里边创建一个子类(My_Ui_Form)继承testUI.py中的Ui_Form
优点1:实现逻辑清晰;
优点2:后续如果界面或者逻辑需要变更,好维护;
"""
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QMainWindow
from testUI import Ui_Formclass My_Ui_Form(QWidget, Ui_Form):def __init__(self):super(My_Ui_Form, self).__init__()self.setupUi(self)def pushButton_click(self):self.textEdit.setText("你点击了按钮")if __name__ == '__main__':app = QApplication(sys.argv)win = My_Ui_Form()win.show()sys.exit(app.exec_())

        运行程序,点击界面中的按钮,可以在文本框内显示文字,结果如下:

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

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

相关文章

Java读取InfluxDB数据库的方法

本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、tag等。 首先,创建一个Java项目,用于撰写代码。如果大家是基于IDEA来创建项目,则可…

嵌入式驱动开发详解7(并发、竞争、中断)

文章目录 前言并发和竞争原子操作自旋锁信号量互斥体 中断中断简介中断API上半部和下半部设备树分析中断号获取源码 后续参考文献 前言 中断会引起线程的切换,并发和竞争也是对线程切换的一种灵活保护和处理,因此这里将中断和并发与竞争放在一块讲解说明…

渗透测试常用术语总结

一、攻击篇 1.攻击工具 肉鸡 所谓“肉鸡”是一种很形象的比喻,比喻那些可以被攻击者控制的电脑、手机、服务器或者其他摄像头、路由器等智能设备,用于发动网络攻击。 例如在2016年美国东海岸断网事件中,黑客组织控制了大…

11.MySQL视图特性

目录 视图基本使用视图规则和限制 视图 视图是一个虚拟表, 其内容有查询定义. 同真实的表一样, 视图包含一系列带有名称的列和行数据. 视图的数据变化会影响到基表, 基表的数据变化也会影响到视图, 这个视图和刚刚讲的ReadView之间没有任何关系. 基本使用 创建视图: create vi…

【RabbitMQ高级篇】消息可靠性问题(1)

目录 1.消息可靠性 1.1.生产者消息确认 1.1.1.修改配置 1.1.2.定义Return回调 1.1.3.定义ConfirmCallback 1.2.消息持久化 1.2.1.交换机持久化 1.2.2.队列持久化 1.2.3.消息持久化 1.3.消费者消息确认 1.3.1.演示none模式 1.3.2.演示auto模式 1.4.消费失败重试机制…

strrchr的概念和使用案例

strrchr 是 C 语言标准库中的一个函数,用于在字符串中查找最后一次出现的字符,并返回指向该字符的指针。 概念: strrchr 函数在给定的字符串中从末尾开始搜索指定的字符,返回一个指向该字符最后一次出现的指针。如果字符在字符串…

4-1 输出一组成绩中的最高分和最低分

第一行输入人数n,第二行输入每个人的成绩,用空格分开。输出所有成绩中的最高分和最低分。 输入格式: 第一行输入n,大于0的整数;第二行输入n个大于等于0,小于等于100的整数,用空格分开。 输出格式: 最高…

前端Python应用指南(六)构建RESTful API:使用Flask和Django实现用户认证与授权

《写给前端的python应用指南》系列: (一)快速构建 Web 服务器 - Flask vs Node.js 对比(二)深入Flask:理解Flask的应用结构与模块化设计(三)Django vs Flask:哪种框架适…

《Vue3 四》Vue 的组件化

组件化:将一个页面拆分成一个个小的功能模块,每个功能模块完成自己部分的独立的功能。任何应用都可以被抽象成一棵组件树。 Vue 中的根组件: Vue.createApp() 中传入对象的本质上就是一个组件,称之为根组件(APP 组件…

ASO优化之增加应用程序评论行之有效的成功战略

应用评论不仅对于用户信任至关重要,而且对于提高应用可见度、转化率以及整体应用商店优化(ASO)也至关重要。评论和评分会影响App Store和Google Play平台上算法的排名,这些平台优先考虑具有更高参与度和满意度指标的应用程序。下面,我们将概述…

字符串存储、分割相关总结(strncpy 函数和strtok() 函数相关)

1.想用这些函数都需要导入头文件 #include<string.h> 2.怎么创建字符串并输入 #define maxsize 100 char a[maxsize1];//创建字符串&#xff0c;预留一个位置放\0 【1】scanf("%s",a);//使用 scanf 函数读取不带空格的字符串 【2】fgets(a, sizeof(a), stdi…

【Rust自学】7.4. use关键字 Pt.2 :重导入与换国内镜像源教程

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 7.4.1. 使用pub use重新导入名称 使用use将路径导入作用域内后。该名称在词作用域内是私有的。 以上一篇文章的代码为例&#xff1a; m…

快速排序学习优化

首先&#xff0c;上图。 ‘’’ cpp int partSort(int *a ,int left,int right) {int keyi left; //做左侧基准while(left<right){while(left<right && a[right]>a[keyi]){right--;}while(left<right && a[left]<a[keyi]){left;}swap(a[left…

宏集eX710物联网工控屏在石油开采机械中的应用与优势

案例概况 客户&#xff1a;天津某石油机械公司 应用产品&#xff1a;宏集eX710物联网工控屏 应用场景&#xff1a;钻井平台设备控制系统 一、应用背景 石油开采和生产过程复杂&#xff0c;涵盖钻井平台、采油设备、压缩机、分离器、管道输送系统等多种机械设备。这些设备通…

【MySQL】第一弹----库的操作及数据类型

笔上得来终觉浅,绝知此事要躬行 &#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;MySQL &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 一、SQL 语句分类 DDL:数据定…

【Ubuntu】如何轻松在Apache服务器上部署Laravel博客系统

Laravel 是一个 PHP 框架&#xff0c;和 Angular 以及 Symfony 类似&#xff0c;它能让你快速且高效地搭建出功能强大的网站。在这篇文章里&#xff0c;我将手把手教你如何在 Ubuntu 系统上使用 Apache 和 MySQL 部署 Laravel 应用。 步骤 1&#xff1a;更新系统 首先&#x…

阿里云-将旧服务器数据与配置完全迁移至新服务器

文章目录 一&#xff1a;创建镜像二&#xff1a;将创建好的镜像复制到新服务器所在的目标地域&#xff08;如果新服务器与镜像在同一地域就不用进行这一操作&#xff09;三&#xff1a;将镜像配置到新服务器上四&#xff1a;导出安全组&#xff08;如果新服务器与旧服务器使用同…

MYSQL无法被连接问题

如果您在尝试连接到MySQL服务器时遇到问题&#xff0c;以下描述了您可以采取的一些措施来纠正该问题。 确保服务器正在运行。如果没有&#xff0c;则客户端无法连接到它。例如&#xff0c;如果尝试连接到服务器失败并出现以下消息之一&#xff0c;则可能是服务器未运行&#xf…

vue3使用element-plus,解决 el-table 多选框,选中后翻页再回来选中失效问题

问题&#xff1a;勾选的数据分页再回来回消失 1.在el-table中加 :row-key"getRowKey" const getRowKey (row) > { return row.id; // id必须是唯一的 }; 2.给type为selection的el-table-column添加上reserve-selection属性 <el-tableref"multipleTab…

防火墙原理介绍大全

硬件防火墙的原理 软件防火墙只有包过滤的功能&#xff0c;硬件防火墙中可能还有除软件防火墙以外的其他功能&#xff0c;例如CF&#xff08;内容过滤&#xff09;IDS&#xff08;入侵侦测&#xff09;IPS&#xff08;入侵防护&#xff09;以及VPN等等的功能。 也就是说硬件防…