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

server/2024/12/29 3:18:17/

目录

一 安装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:后续如果界面或者逻辑需要变更,好维护;

        代码如下:

python">"""
界面与业务逻辑分离实现:新建一个.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.ppmy.cn/server/154086.html

相关文章

青岛市勘察测绘研究院携手云轴科技ZStack获评专有云典型案例

近日,中国信息通信研究院(简称“中国信通院”)举办的“央国企上云高质量发展沙龙”在北京召开,会上公布了2024专有云典型案例,旨在为产业提供标杆示范与发展指引,助力构建创新生态,推动数字化转…

elasticsearch中使用fuzzy查询

文章目录 1. fuzzy 查询的基本用法示例文档: 2. 基本的 fuzzy 查询解释:查询结果: 3. fuzziness 的不同设置**fuzziness 设置为数字(编辑距离)**fuzziness 设置为 0 4. 更多的 fuzzy 查询选项示例: 5. 总结…

LeetCode每日三题(一)哈希

一、两数之和 自己答案&#xff1a; class Solution {public int[] twoSum(int[] nums, int target) {//遍历每一个元素 如果满足条件则终止循环返回答案int[] resultnew int[2];for(int i0;i<nums.length-1;i){for(int ji1;j<nums.length;j){if((nums[i]nums[j])target)…

第一个C++程序 - Hello World, 编译与运行

引言 编写并运行你的第一个 C 程序是学习这门语言的第一步。通过这个简单的例子&#xff0c;你将了解如何创建、编译和运行一个基本的 C 程序。本文将详细介绍每个步骤&#xff0c;并确保初学者能够顺利上手。 一、编写 "Hello World" 程序 1. 创建源代码文件 首先…

NestJS 认证与授权:JWT、OAuth 和 RBAC 实现

在上一篇文章中&#xff0c;我们介绍了 NestJS 的数据库操作和 TypeORM 集成。本文将深入探讨如何在 NestJS 中实现完整的认证和授权系统。 JWT 认证实现 1. 安装依赖 npm install nestjs/jwt nestjs/passport passport passport-jwt bcrypt npm install -D types/passport-…

JAVA没有搞头了吗?

前言 今年的Java程序员群体似乎承受着前所未有的焦虑。投递简历无人问津&#xff0c;难得的面试机会也难以把握&#xff0c;即便成功入职&#xff0c;也往往难以长久。于是&#xff0c;不少程序员感叹&#xff1a;互联网的寒冬似乎又一次卷土重来&#xff0c;环境如此恶劣&…

探秘 Chrome 隐藏配置项:chrome://net-internals

Chrome浏览器中的chrome://net-internals/页面是一个强大的内置工具&#xff0c;提供了监视和调试网络请求与事件的详细功能。 一、chrome://net-internals/#events 地址&#xff1a;chrome://net-internals/#events 这个页面用于监视和调试网络请求和事件。通过它&#xff…

华为仓颉编程语言的应用案例分析

一、华为仓颉语言简介 1.1 仓颉语言的设计背景 华为仓颉&#xff08;Cangjie&#xff09;语言是华为自主研发的新一代编程语言&#xff0c;旨在满足分布式系统和高并发场景下的编程需求。其设计初衷是解决传统开发模式中难以处理复杂分布式任务、效率低下以及协作困难的问题。…