基于PyQt5的UI界面开发——菜单与工具栏

news2024/11/27 3:13:56

窗口类型

我们进入QtDesigner,创建主窗口有三种类型:QMainWindow、QDialog 和 QWidget。

在新建应用程序窗口,通常选择 MainWindow 创建主窗口的图形界面就可以了。QtDesigner 创建的 “MainWindow” 虽然是一个空白的图形窗口,但生成了centralwight、menubar、statusbar等三个基本控件,可以在右上方的"对象查看器"中查看这些控件。

编辑窗口属性

点击空白界面后,确定在属性编辑器中是空白界面。

布局大小修改:如果对于尺寸没有特定的要求,可以直接在设计界面的四个角进行拖拽。如果有特定的数值要求,就在QWidget下修改,具体可看geometry。

窗口对象名称:它在QObject下面,objectName默认为 “MainWindow”,这里可以修改,但因为后面会调用这部分,这里修改了在主程序中也需要进行相应修改。一些例程中定义类 Ui_Form,就是将窗口对象名称设为 “Form”。

应用图标修改:同样是QWidget下,在windowIcon的左侧空白处右键选择文件,同时我们选择在对应的工程文件夹下,新建一个./image文件夹,这里面就用来放置我们的图片,比如在image文件夹下icetea.png作为我的应用图标。

重命名窗体标题:同样是QWidget下,直接修改windowTitle的内容。比如我这里修改的是"基于语义分割的道路裂缝检测系统"。

点击Ctrl+R预览一下:

创建菜单栏

上图当中我就已经先一步创建了一个菜单选项,就是左上角的"文件"。而在图形窗口左上角显示有文本输入框 “在这里输入”,双击即可进行修改,像这种显示在最外面的我们叫做:一级菜单,那么什么是二级菜单呢?

非常好理解,这里的打开保存关闭就是二级菜单,关闭的下面"在这里输入"即可添加新的菜单,在退出右边的"在这里输入"即可添加一级菜单。

关联动作

这里需要先解释一下PyQt5信号与槽的概念。

PyQt5采用了一种被称为“信号与槽”机制的编程模式,用于处理对象间的通信和事件处理。

在PyQt5中,信号(signal)是对象发出的特定事件,例如按钮被点击、文本被修改等。而槽(slot)是与信号相关联的特定动作或函数。当信号被触发时,与之相关联的槽会被自动调用。

信号和槽的连接是通过使用QObject类的connect方法来实现的。该方法接收两个参数,第一个参数是一个信号对象,第二个参数是一个槽对象。当信号被触发时,PyQt5会自动搜索对象的槽,并调用与之连接的槽方法。

想要添加信号与槽的方法:

在右下角选择信号/槽编辑器,按照上面的进行选择,重新生成ui文件即可发现代码中多出了这个:

self.actionclose.triggered.connect(MainWindow.close)

点击二级菜单的关闭即可关闭窗口,似乎一级菜单并没有被关联上,原来是QtDesigner不支持一级菜单对象直接连接槽函数。

建立工具栏

创建方法很简单,右键选择第一个,但是不是很好显示,工具栏就在菜单栏下面,很窄不易发现。在工具栏中只能添加动作控件(QAction),因此要先添加/编辑动作。

同样是右下角,我们选择动作编辑器,选择第一个图标进行新建。

这里的文本可以选择中文或英文,对象名称就只能选择英文,在图标的位置我们选择打开文件,请记住将找到的图标放置在同工程文件下image文件夹中。

 新建好后,直接将其拖拽到工具栏的位置。

 就是这样的,没有添加图标的就是显示文字,后面再添加上。

使用python来调用UI界面

完成了QtDesigner后,点击Ctrl+S。进入pycharm,右键uiDemo1.ui文件,用PyUIC转换为python文件,我们新建一个GUIDemo3.py文件,将下面的代码导入:

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
import uiDemo1 

if __name__ == '__main__':
    app = QApplication(sys.argv)  # 创建应用程序对象
    MainWindow = QMainWindow()  # 创建主窗口
    ui = uiDemo1.Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()  # 显示主窗口
    sys.exit(app.exec_())  # 在主线程中退出

效果图如下,这里面除了退出有效,其他的均没有功能。

下一节学习信号与槽函数的连接。

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

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

相关文章

Redis进阶底层原理 - 高可用哨兵模式

Redis哨兵模式是redis实现高可用的一种分布式架构。哨兵节点是一种特殊的Redis实例,它不用于存储业务数据,它主要工作内容如下:(高可用不是指不出问题,而是出了问题后能及时的自动化解决,从而在客户端无感&…

Qt 项目架构之----MVC架构

MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。 Model(模型)-是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图&#x…

web攻击

web攻击分为,信息泄露,弱口令,xss攻击,sql注入,文件上传,文件包含,webs hell,命令执行,xml实体注入。 #信息泄露 信息泄露主要包括敏感信息的信息,像口令&…

leetcode1171. 从链表中删去总和值为零的连续节点

1171. 从链表中删去总和值为零的连续节点 - 力扣(Leetcode) 累加数据和重复出现相同时,说明从相同和的第一次出现的下一个结点到最后一次相同累加数据的结点和为0,删除这段结点串、 给你一个链表的头节点 head,请你编…

Yocto系列讲解[技巧篇]92 - armv8 aarch64兼容armv7 32位程序运行环境

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 概述使能Multilib支持32位的helloworld程序执行出现No such file or directorylibc.so.6 cannot open shared object file修改内容固化…

整数数组的奇数位于数组的前半部分,偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路1: 类…

一.CreateFileMapping实现的共享内存及用法

共享内存概念 1.在32位的Windows系统中,每一个进程都有权访问他自己的4GB(2324294967296)平面地址空间,没有段,没有选择符,没有near和far指针,没有near和far函数调用,也没有内存模式…

CUDA并行编程

gpu 图形处理专用单元 cpu是主机单元 gpu显卡处理器 专门执行复杂数学和几何计算 不同表面有不同光纤效果 必须达到快速计算能力 gpu专门设计为大规模并行吞吐处理设计 用于加速图形显示 , 吞吐量高 峰值计算能力 4612 GFLOP/S 一秒钟可以计算4612G次浮点数计算…

SQL注入实操

文章目录 一、sqli-lab靶场搭建二、通关笔记1.Less-1a.单引号‘b.updatexmlc.concatd.unione.information_schemaf.GROUP_CONCATg.select 1,2 2.Less-2 一、sqli-lab靶场搭建 下载路径:https://www.hibugs.net/hi-resource/sqli-labs-master.zip 下载后解压复制到w…

腾讯数据中台项目集管理实战分享︱腾讯高级项目经理张嵎桐

腾讯PCG大数据平台部高级项目经理张嵎桐先生受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:腾讯数据中台项目集管理实战分享。大会将于8月12-13日在北京举办,敬请关注! 议题简要: 在“IT时代”向“…

9、加载cesium世界地形

本节演示使用CCsium库加载cesium的世界地形,使用第四节单击事件的例子,修改点击事件添加地形。 1、ceisum显示地形需要引入CesiumTerrainProvider和CreateWorldTerrain类。与ceisum类似,修改鼠标点击事件,创建地形并添加到ceisum…

Apache Doris (二十八):Doris 数据导入(六)Spark Load 1- 原理及配置

目录 1. 基本原理 2. Spark集群搭建 2.1 Spark Standalone 集群搭建 2.2 Spark On Yarn 配置 3. Doris配置Spark与Yarn 3.1 Doris配置Spark 3.2 Doris配置Yarn 进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质…

leetcode:定长字串中元音的最大数目

定长字串中元音的最大数目 medium 给你字符串 s 和整数 k 。 请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。 英文中的 元音字母 为(a, e, i, o, u)。 示例 1: 输入:s "abciiidef", k 3 输出…

KBLAutoSwitch偶尔无法自动切换输入法的问题

KBLAutoSwitch(https://github.com/flyinclouds/KBLAutoSwitch)是一款中英文输入法自动切换软件,但是在使用过程中偶尔会出现无法自动切换成自己想要的输入法的问题,比如我将cmd窗口设为自动切换英文输入法,但是在使用…

计算机组成原理 期末复习

在我的博客查看:https://chenhaotian.top/study/computer-composition-principles-final-review/ 如果遇到 外链图片转存失败 ,直接打开链接查看图片 计算机组成原理 期末复习 第 1 章 计算机系统概论 1.1 计算机的诞生和发展 冯诺依曼体系 1.2 计算…

LLaMA以及其扩展模型总结(一)

自从ChatGPT发布以来,人们看到了AGI时代的曙光,但是由于ChatGPT是闭源的,只能在官网体验和使用API进行访问,据OpenAI CEO说是出于AGI的安全性考虑,这样大大限制了很多研究人员和机构对于AGI的研究进展。Meta公司反其道…

在线转换视频格式到mp4怎么换?分享两个方法!

在日常生活和工作中,我们常常需要将视频文件转换为MP4格式以便于在各种设备上播放和共享。本文将介绍两种快速转换视频格式为MP4的方法,一种是使用记灵在线工具,另一种是使用一个在线转换工具。 方法一:记灵在线工具 记灵是一款…

LED驱动(原始架构)——STM32MP157

文章目录 硬件知识 LED 原理GPIO 引脚操作方法GPIO 模块一般结构GPIO 寄存器的一般操作 STM32MP157的GPIO操作方法先使能PLL4MPU、MCU共享GPIO模块1. 在MPU上使能某个GPIO模块2. 在MCU上使能某个GPIO模块 GPIO模块设置引脚工作模式:GPIO模式对于输出引脚&#xff1a…

模块化+命名空间

1.目的:为了让代码更好维护,让多种数据分类更加明确 2.修改src/store/index.js为了解决不同模块命名冲突的问题,将不同模块的namespaced:true,之后在不同页面中引入getter actions mutations state,需要加上所属的模块…

ADC基础进阶

ADC 啊.... 拿华大的来举例吧... 最少要知道了两个电路。 1. VERF 华大HC32F60的ADC以VREF为内部基准电压,如果VREFH管教悬空,那么实际其基准电压应该是MCU_3.3V,如果VREFH额外搭电路提供电压,应该是以其实际提供的电压为准&am…