【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习

2023-11-19

目录

1、菜单栏(QMenu())——一般在窗口顶部

1)创建菜单栏步骤

2)信号与方法

3)实操

 2、工具栏——一般在菜单栏下方

1)创建步骤

2)方法与信号

信号:

方法:

 3)实操示例

3、状态栏QStateBar——用于显示状态信息,一般在窗口底部

1)使用步骤

2)以菜单栏点击动作触发状态栏为例

 ​编辑


1、菜单栏(QMenu())——一般在窗口顶部

1)创建菜单栏步骤

菜单栏只有在窗口类型为QMainwindow才有,具体步骤为:

1)获取窗口菜单栏

2)给菜单栏添加条目

3)创建新的动作

4)将新的动作添加到对应的条目下

		# 获取菜单栏
		bar = self.menuBar()
		# 往菜单栏添加菜单项目
		file = bar.addMenu("文件")
		# 给菜单项目添加子菜单
		new = file.addAction("新建")
		save = file.addAction("保存")

2)信号与方法

信号:主要有菜单栏上的动作触发信号triggled()

方法:给动作添加快捷键(setShortcut("CTRL+S"))等。

3)实操

from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtCore import QDateTime,QDate,QTime
import sys

class QMenuDemo(QMainWindow):
	def __init__(self):
		super(QMenuDemo, self).__init__()

		# 获取菜单栏
		bar = self.menuBar()
		# 往菜单栏添加菜单项目
		file = bar.addMenu("文件")
		# 给菜单项目添加子菜单
		new = file.addAction("新建")
		save = file.addAction("保存")
		save.setShortcut("CTRL+S") # 设置快捷键
		save.triggered.connect(self.saveActionSlot)

	def saveActionSlot(self):
		print(self.sender().text())

if __name__ == '__main__':
	app = QApplication(sys.argv)
	mainWin = QMenuDemo()
	mainWin.show()
	sys.exit(app.exec_())

 2、工具栏——一般在菜单栏下方

1)创建步骤

1)创建一个工具栏

2)为工具栏添加动作

		# 添加工具栏
		toolBar = self.addToolBar("File")

		# 创建新的动作,添加到工具栏
		new = QAction(QIcon('icon.jpg'),"new",self)
		save = QAction(QIcon("icon.jpg"),"save",self)

		toolBar.addAction(new)
		toolBar.addAction(save)

2)方法与信号

信号:

1)动作触发信号,和菜单栏一样action.triggered();

2)工具栏上有动作被触发信号toolBar.actionTriggered

方法:

1)给动作添加快捷键(setShortcut());

2)设置工具栏上的动作显示模式:

①只显示图标——toolBar.setToolButtonStyle(Qt.ToolButtonTextOnly)

②只显示文本——toolBar.setToolButtonStyle(Qt.ToolButtonTextOnly)

③图标文本都显示

文本显示在图标下面——toolBar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)

文本显示在图标旁边——toolBar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)

 

注:一个工具栏上所有的动作显示模式都是一样的,如果需要显示模式不一样,则可以通过创建多个工具栏,然后分别对不同工具栏设置不同的显示模式

 3)实操示例

from PyQt5.QtWidgets import QMainWindow,QApplication,QAction
from PyQt5.QtCore import QDateTime,QDate,QTime,Qt
from PyQt5.QtGui import QIcon
import sys

class QToolBarDemo(QMainWindow):
	def __init__(self):
		super(QToolBarDemo, self).__init__()

		# 添加工具栏
		toolBar = self.addToolBar("File")

		# 创建新的动作,添加到工具栏
		new = QAction(QIcon('icon.jpg'),"new",self)
		save = QAction(QIcon("icon.jpg"),"save",self)
		edit = QAction(QIcon("icon.jpg"),"edit",self)

		toolBar.addAction(new)
		toolBar.addAction(save)
		toolBar.addAction(edit)

		toolBar.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)

		toolBar.actionTriggered.connect(self.showAction) # 工具栏上的动作被触发的信号,自动传回触发的动作对象

		self.setWindowTitle("工具栏演示")

	def showAction(self,a):
		print(a.text())


if __name__ == '__main__':
	app = QApplication(sys.argv)
	mainWin = QToolBarDemo()
	mainWin.show()
	sys.exit(app.exec_())

3、状态栏QStateBar——用于显示状态信息,一般在窗口底部

1)使用步骤

1)先创建一个状态栏

self.statuBar = QStatusBar()

2)然后将状态栏设置到窗口

self.setStatusBar(self.statuBar)

3)将需要显示的信息显示在窗口

self.statuBar.showMessage(self.sender().text(), 5000)

2)以菜单栏点击动作触发状态栏为例

from PyQt5.QtWidgets import QMainWindow,QApplication,QStatusBar
from PyQt5.QtCore import QDateTime,QDate,QTime
import sys

class StatusBarDemo(QMainWindow):
	def __init__(self):
		super(StatusBarDemo, self).__init__()

		# 获取菜单栏
		bar = self.menuBar()
		# 往菜单栏添加菜单项目
		file = bar.addMenu("状态栏演示")
		# 给菜单项目添加子菜单
		new = file.addAction("显示状态栏")

		file.triggered.connect(self.showStatu) # 给菜单栏条目设置触发,会自动将触发的动作名称传给槽函数
		new.triggered.connect(self.showAction) # 给菜单栏动作设置触发,不会自动将触发的动作名称传给槽函数

		# 创建一个状态栏
		self.statuBar = QStatusBar()
		# 给窗口设置状态栏
		self.setStatusBar(self.statuBar)

	def showStatu(self,a):
		# 将消息显示在状态栏上5s
		self.statuBar.showMessage(a.text(),5000)

	def showAction(self):
		self.statuBar.showMessage(self.sender().text(), 5000)

if __name__ == '__main__':
	app = QApplication(sys.argv)
	mainWin = StatusBarDemo()
	mainWin.show()
	sys.exit(app.exec_())

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习 的相关文章

随机推荐

  • etree.html 报错 AttributeError:‘function’ object has no attribut ‘HTML’

    etree html 报错 1 Pycharm 中lxml没有etree模块的解决方法 之前是 from lxml import etree tree etree HTML python 3 5以上版本lxml中没有了etree 要换另外一
  • Windows 环境下安装C语言运行环境

    STEP1 下载min gw 下载地址 https sourceforge net projects mingw files STEP2 点击 mingw get setup exe安装 安装目录可以自己选择 但是要记住 后面添加环境变量需
  • 离散数学---期末复习知识点

    一 数理逻辑 复习知识点 1 命题与联结词 否定 析取 合取 蕴涵 等价 命题 非真既假的陈述句 复合命题 由简单命题通过联结词联结而成的命题 2 命题公式与赋值 成真 成假 真值表 公式类型 重言 矛盾 可满足 公式的基本等值式 3 范式
  • 机器学习编程作业-逻辑回归

    逻辑回归 作业说明 复习 任务一 使用逻辑回归辨别真假钞票 任务二 使用逻辑回归对电影评论分类 作业说明 任务一 使用逻辑回归辨别真假钞票 钞票数据集 Banknote Dataset 涉及根据给定钞票的数个度量的照片预测是真钞还是假钞 它
  • vue-element-admin项目

    vue element admin vue element admin 介绍 功能 前序准备 目录结构 项目运行机制和代码注释 main js App vue permission js Vuex结构 scss icons 安装 Contr
  • 密码学之DES算法简述(1)

    1 DES算法描述 1 输入64位明文数据 并进行初始置换IP 2 在初始置换IP后 明文数据再被分为左右两部分 每部分32位 以L0 R0表示 3 在秘钥的控制下 经过16轮运算 f 4 16轮后 左 右两部分交换 并连接再一起 再进行逆
  • MyBatis中将结果集封装到指定类型详解(反射Class.forName详解)

    文章目录 1 将结果集封装到指定类型中 1 1指定类型 1 2将信息存入到mapper中 1 3反射 1 3 1获取全限定类名 加载类并且实例化 1 3 2执行SQL语句 生成的结果集获取元信息 把每列的数据存入到指定类型中 1 4Clas
  • java正则表达式语法详解及其使用代码实例

    代码下载地址 http www zuidaima com share 1835085544524800 htm 原文 java正则表达式语法详解及其使用代码实例 Regular Expressions of Java Tutorial 译者
  • Community宣言

    Community宣言 一个幽灵 共产主义的幽灵 在欧洲游荡 为了对这个幽灵进行神圣的围剿 旧欧洲的一切势力 教皇和沙皇 梅特涅和基佐 法国的激进派和德国的警察 都联合起来了 有哪一个反对党不被它的当政的敌人骂为Community呢 又有哪
  • 【python知识点】锦集

    版权声明 未经博主同意 谢绝转载 请尊重原创 博主保留追究权 https blog csdn net m0 69908381 article details 132368704 出自 进步 于辰的博客 相关博文 python细节 经验 锦集
  • 老电脑如何用U盘重装系统?老电脑用U盘重装系统教程

    老电脑如何用U盘重装系统 用户利用U盘来给老电脑重装系统 能够帮助解决老电脑运行缓慢 系统出现故障或感染病毒等问题 通过重装系统 可以清除旧的系统文件和应用程序 重新安装一个干净且高效的操作系统 那么具体要如何操作 可以参考以下小编分享的老
  • 微信小程序开发(八)button按钮去除圆角

    背景 小程序使用button 会有一个默认圆角 如果修改数值比较容易 想要去掉就可能遇到坑 原因 小程序的设计风格是button的border和圆角等都是通过after写的 如果需要去掉圆角效果 最好是使用如下代码 button borde
  • MFC多线程编程之一——问题提出

    原文地址 http www vckbase com document viewdoc id 1704 一 问题的提出 编写一个耗时的单线程程序 新建一个基于对话框的应用程序SingleThread 在主对话框IDD SINGLETHREAD
  • 一步一步分析讲解神经网络基础-Feedforward Neural Network

    A feedforward neural network is an artificial neural network wherein connections between the units do not form a cycle A
  • linux执行makefile文件或目录,makefile.am_makefile.in文件_linux怎么用makefile

    默认的安装路径 1 标准安装路径 默认安装路径为 prefix usr local 可以通过 configure prefix 的方法来覆盖 其它的预定义目录还包括 bindir prefix bin libdir prefix lib d
  • c++中的时间处理(3)与sleep相关的时间函数

    1 Sleep 函数 头文件 Windows下为 windows h Linux下为 unistd h 注意 1 Sleep是区分大小写的 有的编译器是大写 有的是小写 2 Sleep括号里的时间 在windows下是已毫秒为单位 而Lin
  • MySQL性能分析工具的使用

    1 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候 该如何思考呢 这里把思考的流程整理成下面这张图 整个流程划分成了 观察 Show status 和 行动 Action 两个部分 字母 S 的部分代表观察 会使用相应的分析工具 字
  • AngularJS API

    AngularJS提供了如下的一下常用函数 API名称 描述 anguler lowercase 转换为小写字母 anguler uppercase 转换为大写字母 angular isString 是否为字符串 isNumber 是否为数
  • 常用的转义字符 C语言

    转义字符 转义字符是一种特殊的字符常量 以反斜线 开头 后跟字符 具有特定的含义 不同于字符原有的含义 故称 转义 字符 上表 转义字符 含义 n 回车换行 光标移到下一行的行首 r 回车 光标移到当前行的行首 把当前行前面全部删掉 t 制
  • 【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习

    目录 1 菜单栏 QMenu 一般在窗口顶部 1 创建菜单栏步骤 2 信号与方法 3 实操 2 工具栏 一般在菜单栏下方 1 创建步骤 2 方法与信号 信号 方法 3 实操示例 3 状态栏QStateBar 用于显示状态信息 一般在窗口底部