快速构建一个ui界面程序--pyqt入门

快速构建一个ui界面程序--pyqt入门

  • 0 背景
  • 1 环境准备
    • 1.1 安装python
    • 1.2 安装pyqt
  • 2 UI设计
    • 2.1 启动UI设计可视化工具
    • 2.2 生成*.ui文件
    • 2.3 编译ui生成对应的py
  • 3 使用UI

0 背景

本文档用于记录开发者如何快速构建一个简单UI程序。开发者使用文档中提及的工具并用于商业活动时,请注意对应工具的使用协议。

本文介绍如何使用pyqt快速构建一个简单UI,此类需求常见于个人小型工具可视化,原型机demo开发的场景中。

选用pyqt进行UI构建的一个原因:

1 环境准备

1.1 安装python

这个不细讲,linux一般出厂自带python工具,其它系统参考python官网。

1.2 安装pyqt

命令行环境下使用pip工具进行安装,如果无法下载,请搜索“python 安装 pyqt”。以下命令考虑国内开发者,使用了华为的pip源加速。

pip install PyQt5 -i https://mirrors.huaweicloud.com/repository/pypi/simple
pip install pyqt5-tools -i https://mirrors.huaweicloud.com/repository/pypi/simple

2 UI设计

2.1 启动UI设计可视化工具

安装pyqt时会对应按照Designer工具,用于做可视化的界面设计。可以在任务栏搜索到对应的工具。也可以在命令行窗口输入designer来启动这个工具。
在这里插入图片描述

2.2 生成*.ui文件

进入designer可视化设计界面之后,左上角"文件"->“新建”。
创建一个界面设计的窗体,这里我们直接默认MainWindow就好。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

按上图的方式设计一个简易的UI。选中“文件”->“另存为”,保存即生成对应的.ui文件了。我这里偷懒,就叫ui.ui了。空间还可以改对应的名字,这里也偷懒,就保留了默认名字。

在这里插入图片描述

2.3 编译ui生成对应的py

命令行中,使用pyuic工具编译ui文件,把ui.ui编译为python脚本。

pyuic5 -o ui.py ui.ui

在这里插入图片描述
查看一下生成的ui.py,关注到里头就一个类Ui_MainWindow。我们需要重点关注的就是类中setupUi接口。

# auto generated ui.py
class Ui_MainWindow(object):def setupUi(self, MainWindow):# ...

稍微读一下setupUi,发现里面是在设置我们的MainWindow名字大小等属性,并创建pushButtonlabel控件。猜测我们把一个显示在前端的MainWindow对象传给setupUi,它就会帮我们按ui.ui文件进行设置。自此,我们的前端ui设计工作就完成了,我们只需要在主函数搞一个前端MainWindows,传给setupUi即可。

3 使用UI

根据第2节对ui.py的猜测,构造一个使用该UI的范例main.py如下:

在这里插入图片描述

# -- coding: utf-8 -- import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLabel, QComboBox
# 从生成的代码ui.py中导入Ui_MainWindow类
from ui import Ui_MainWindow as Ui_MainWindow# 创建一个MainWindow类,继承于QMainWindow
class MainWindow(QMainWindow):def __init__(self):super().__init__()# 持有一个ui格式self.ui = Ui_MainWindow()# 将自己传给ui,让它帮忙设计样式self.ui.setupUi(self)# 将ui中pushButton控件的clicked事件关联到处理函数on_clickself.ui.pushButton.clicked.connect(self.on_click)# pushButton的回调函数,注意这个名字并非限定为on_clickdef on_click(self):# 使用ui中的label显示"clicked"self.ui.label.setText("clicked!")if __name__ == "__main__":# 启动一个前端窗口标准操作app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec_())

main.py中,把控件pushButtonclicked事件(Qt里面有时候也叫信号)和回调函数on_click关联了起来。然后在on_click里面设置控件label进行输出。

对于pushButton控件和label控件有哪些信号,对应的回调函数入参是什么,还有哪些功能,本文不深入探究,有需要的开发者请参考Qt的文档进行查询。

命令行执行python main.py,效果如下:

在这里插入图片描述

点击按钮,结果如下。

在这里插入图片描述

可以看到点击按钮后,label的输出发生了变化。自此,我们完成了一个最简易的前端UI搭建。开发者后面根据具体情况随机应变即可。

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

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

相关文章

深度学习(三)-反向传播

反向传播算法 深度学习三巨头发表反向传播论文 https://www.cs.toronto.edu/~hinton/absps/naturebp.pdf 正向传播网络 前一层的输出作为后一层的输入的逻辑结构,每一层神经元仅与下一层的神经元全连接,通过增加神经网络的层数虽然可为其提供更大的灵…

​如何通过Kimi强化论文写作中的数据分析?

在学术研究领域,数据分析是验证假设、发现新知识和撰写高质量论文的关键环节。Kimi,作为一款先进的人工智能助手,能够在整个论文写作过程中提供支持,从文献综述到数据分析,再到最终的论文修订。本文将详细介绍如何将Ki…

elementUI——checkbox复选框监听不到change事件,通过watch监听来解决——基础积累

今天在写后台管理系统的时候,遇到一个需求,就是要求监听复选框的change事件,场景就是:两个复选框互斥,且可以取消勾选。 就是这两个复选框可以同时都不勾选,如果勾选的话,另一个一定要取消勾选。…

transformer,vit

各大数据集排行榜,最好的模型和对应代码,查找 例如分割检测分类 https://paperswithcode.com/sota 1、batchnormal ,多个样本的通道,做均值方差 2、layernormal, 每个图片,一句话使用行的方式切分,更适用…

微型直线导轨高精度运行的工作原理

微型导轨是一种用于高精度定位和运动控制的传动装置,常用于微小化、高精密度化的机械设备中,如IC制造设备、半导体设备、高速移载的设备、精密测量、检测仪器、医疗设备、X-Y table,以及高速皮带驱动的设备等小型化设备。 微型导轨的构成相对…

中地数码集团、新中地教育校企联合GIS开发实践实训项目

中地数码集团是国内GIS软件开发与解决方案提供商头部企业,30年来深耕GIS行业,产业链遍布智慧地质、城市建设规划、国土资源管理等重点行业。新中地教育为首批长江学者、国家地理信息系统工程技术研究中心首席科学家、中地数码创始人吴信才教授、刘永教授…

【C#】字段

C# 类具有哪些成员? 字段 1.什么是字段 字段(field)是一种表示与对象或类型(类与结构体)关联的变量字段是类型的成员,旧称“成员变量”与对象关联的字段亦称“实例字段”与类型关联的字段称为“静态字段”,由static修饰 通过一个代码来详细了解实例字段与静态字段…

9行代码开发一个基于ollama的私有化RAG

前言 OpenAI(LLM Embedding)是使用LiteLLM ollama模拟,具体做法如下, Llamaindex OpenAI LLM 模型默认使用的是gpt-3.5-turbo, embedding 模型默认使用的是text-embedding-ada-002, 所以这里使用litell…

40天的八股文总结

四十天前报名参加了卡哥的八股文训练营,在这四十天中每周都在训练营中打卡,可以通过念出来的方式进行八股文的记忆,同时还可以听到其他训练营中的朋友们的打卡,这让人感觉非常的有动力,每天都有更强烈的记忆八股文的信…

JAVA智能引领乐享同城城市向导达人系统小程序源码

智能引领,乐享同城 —— 城市向导达人系统 🚀【开篇:智能时代的同城新体验】🚀 在这个日新月异的智能时代,我们的城市生活也在悄然发生着变化。你是否厌倦了千篇一律的出行路线?是否渴望在繁忙的都市中找…

网络-多路io

了 fcntl 函数来操作文件描述符的状态标志,其中主要是为了设置非阻塞模式。下面是对 fcntl 函数及其参数的详细解释: fcntl 函数 fcntl 是一个用于操作文件描述符的系统调用,可以用来设置或获取文件描述符的各种属性。其原型如下&#xff1…

kubeadm部署 Kubernetes(k8s) 高可用集群【V1.20 】

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具。 calico.yaml kubernertes-dashboard.yaml 1. 安装要求 在开始之前,部署Kubernetes集群机器需要满足以下几个条件: 7台机器,操作系统Openeuler22.03 LTS SP4硬件配置&#…

通义千问AI PPT初体验:一句话、万字文档、长文本一键生成PPT!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…

笔记:《利用Python进行数据分析》之透视表和交叉表

透视表和交叉表 透视表(pivot table)是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。在Python和pandas中,可以通过本章所…

黑悟空!一区预定!原创首发!SLWCHOA-Transformer-LSTM混合改进策略的黑猩猩优化算法多变量时间序列预测

黑悟空!一区预定!原创首发!SLWCHOA-Transformer-LSTM混合改进策略的黑猩猩优化算法多变量时间序列预测 目录 黑悟空!一区预定!原创首发!SLWCHOA-Transformer-LSTM混合改进策略的黑猩猩优化算法多变量时间序…

前缀和专题——一维模版+二维模版力扣实战应用

目录 1、模版 1.1【模版】一维前缀和 1.1.1 算法思想 1.1.2 算法代码 1.2【模版】二维前缀和 1.2.1 算法思想 1.2.2 算法代码 2、算法应用【leetcode】 2.1 题一:寻找数组的中心下标 2.1.1 算法思想 2.1.2 算法代码 2.2 题二:除自身以外数组…

聚观早报 | 理想汽车OTA 6.2发布;京东大幅上调校招薪资

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 9月3日消息 理想汽车OTA 6.2发布 京东大幅上调校招薪资 哪吒汽车8月销量持续破万 C919国产大飞机首航在即 现代…

怎么找TikTok代运营助力?灵感魔方怎么样?

在当今全球化的浪潮中,海外版抖音已然成为了品牌出海的重要阵地。然而,面对这个充满机遇与挑战的平台,如何找到专业的TikTok代运营团队来助力品牌成功出海呢?以下是一些关键的考量因素和方法。 首先,专业的TikTok代运…

【机器学习】图像处理与深度学习利器:OpenCV实战攻略全面解析

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 前言 OpenCV想必大家都听过跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而…

巴黎奥运会引发体育健身热潮:气膜体育馆成为新宠—轻空间

随着巴黎奥运会的成功举办,全球范围内掀起了一股体育健身的热潮。各地的健身场所迎来了前所未有的参与热情,其中,融合了体育、娱乐、休闲等多种业态的综合气膜体育馆因其独特的优势,迅速成为群众健身的新宠,成为了大众…