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

窗口类型

我们进入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.hqwc.cn/news/26986.html

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

相关文章

linux 基于debian_ubuntu AB系统适配(四)- 硬盘 wifi U盘无法使用问题

1、问题起因 使用原系统可以使用,但AB系统缺不行,开始怀疑是文件系统问题,于是我把AB系统的文件系统给替换到原系统中去,结果一样可以使用。于是替换了内核文件,结果不能使用了,那问题就出现在了内核中,刚开始以为是设备树的问题,于是拿原系统的设备树与AB系统的设备树…

[Docker异常篇]解决Linux[文件异常]导致开机Docker服务无法启动

文章目录 一:场景复现二:解决思路2.1: 对比其他节点docker配置2.2:试着修改为正常节点配置2.2:根据上面异常显示,不一定是配置不对,可能是文件系统有损坏 三:解决 -> 执行命令 mo…

黄皮书-线接触热弹流润滑 Fortran+Matlab转译代码

原Fortran代码有错误,进行了修改,数值上差别不大。根据Fortran代码转的Matlab,可以完美运行,但是因为精度问题有差异,只能说趋势是一致的。 需要私我-资源里只是Fortran运行结果

uniapp学习之【从一个小程序跳转到另一个小程序】

uni.navigateToMiniProgram({appId: ,path: pages/index/index?id123,extraData: {data1: test},success(res) {// 打开成功} })

UEC++: 接口

1. 2. 3. 4.一般接口的源文件是不用写逻辑的,一般是在接口头文件中编写 5.被C类继承: 写完函数,千万不允许定义!!! 添加标记宏 找到一个类:继承I开头的接口:引用头文件 错误重写&…

接口测试 react+unittest+flask 接口自动化测试平台

目录 1 前言 2 框架 2-1 框架简介 2-2 框架介绍 2-3 框架结构 3 平台 3-1 平台组件图 1 新建用例 2 生成测试任务 3 执行并查看测试报告 3-2 用例管理 3-2-1 用例设计 3-3 任务管理 3-3-1 创建任务 3-3-2 执行任务 3-3-3 测试报告 3-3-4 邮件通知 1 前言 构建…

java实现敏感词过滤,简单实例,dfa算法

java实现敏感词过滤,简单实例,dfa算法 最近在看黑马的视频学习的时候,看到了,自定义敏感词过滤的,感觉蛮有意思的,记录一下。 直接上实例 第一步初始化敏感词(可以写死,当然在开发…

BGP实验--联邦

1,AS1存在两个环回,一个地址为192.168.1.0/24 该地址不嫩在任何协议中宣告 AS3中存在两个环回,一个地址为192.168.2.0/24该地址不能再任何协议中宣告,最终要求这两个环回可用互相通讯 AS1中的另一个环回为10.0.0.0 24&#…

不同的二叉搜索树(简单题目+升级题目)

简单题目(只需要返回多少种): 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例: 输入:n 3 输出:5…

Java版spring cloud 本工程项目管理系统源码-全面的工程项目管理

​ ​工程项目管理系统是指从事工程项目管理的企业(以下简称工程项目管理企业)受业主委托,按照合同约定,代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈,内卷严重&#xff0c…

机器人制作开源方案 | Delta型腿机器狗实现原地动作

1. 功能说明 本文示例将实现R322样机Delta型腿机器狗原地摆臂、原地圆形摆动、原地蹲起、原地踏步的功能。 原地摆臂 原地圆形摆动 原地蹲起 原地踏步 2. 电子硬件 本实验中采用了以下硬件: 主控板 Basra主控板(兼容Arduino Uno) 扩展板 Bigf…

前端 | (二)各种各样的常用标签 | 尚硅谷前端html+css零基础教程2023最新

学习来源:尚硅谷前端htmlcss零基础教程,2023最新前端开发html5css3视频 文章目录 📚HTML排版标签📚HTML语义化标签📚块级元素与行内元素📚文本标签🐇常用的文本标签🐇不常用的文本标…