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

目录

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)

【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习_第1张图片

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

【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习_第2张图片

③图标文本都显示

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

【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习_第3张图片

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

 【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习_第4张图片

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

 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_())

 【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习_第5张图片

 

你可能感兴趣的:(pyqt5,pyqt5,菜单栏QMenu,工具栏QToolBar,状态栏QStateBar)