0
点赞
收藏
分享

微信扫一扫

从零开始学Pyqt5之【控件介绍】(17):菜单栏QMenuBar、QToolBar工具栏、QStatusBar状态栏

从零开始学Pyqt5之【控件介绍】(17):菜单栏QMenuBar、QToolBar工具栏、QStatusBar状态栏

QMenuBar菜单栏

QMenuBar菜单栏作用

在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。

QMenu类提供了一个可以添加到菜单栏的小控件,也用于创建上下文菜单和弹出菜单。每个QMenu对象都可以包含一个或多个QAction对象或级联的QMenu对象。

添加菜单的步骤:

  1. 通过createPopupMenu()函数;menuBar()函数获取主窗口的QMenuBar对象;

  2. 通过addMenu()函数可以将菜单添加到菜单栏中;

  3. 然后通过addAction()函数可以在菜单中进行添加选项的操作。

QMenuBar常用方法

在这里插入图片描述

QMenuBar代码示例

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class MenuDemo(QMainWindow):
	def __init__(self, parent=None):
		super(MenuDemo, self).__init__(parent)
		layout = QHBoxLayout()
		# 创建一个菜单栏对象
		bar = self.menuBar()
		# 添加“File”菜单
		file = bar.addMenu("File")
		# 在“File”菜单下添加"New"选项
		# 可通过字符串或QAction添加选项
		file.addAction("New")
		save = QAction("Save",self)
		save.setShortcut("Ctrl+S")
		file.addAction(save)
		# 在"File"菜单下新建"Edit"菜单对象
		edit = file.addMenu("Edit")
		# 在"Edit"菜单对象下添加"copy"与“paste”菜单
		edit.addAction("copy")
		edit.addAction("paste")
		quit = QAction("Quit",self)
		file.addAction(quit)
		# 单击任何QAction按钮时,QMenu对象都会发射triggered信号。
		file.triggered[QAction].connect(self.processtrigger) 
		self.setLayout(layout)
		self.setWindowTitle("menu 例子")
		self.resize(350,300)
		# print(dir(file))
		print(file.actions())

	def processtrigger(self,q):
		print(q.text()+" is triggered")

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

代码运行结果:
在这里插入图片描述

QToolBar工具栏

QToolBar工具栏作用

QToolBar控件是由文本按钮、图标或其他小控件按钮组成的可移动面板,通常位于菜单栏下方。

QToolBar常用方法

在这里插入图片描述

QToolBar代码示例

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class ToolBarDemo( QMainWindow ):

	def __init__(self, parent=None):
		super(ToolBarDemo, self).__init__(parent)
		self.setWindowTitle("toolbar 例子")		
		self.resize(300, 200)
		
		layout = QVBoxLayout()
		# 在工具栏区域添加文件工具栏
		tb = self.addToolBar("File")
		new = QAction(QIcon("./images/new.png"),"new",self)
		tb.addAction(new)
		open = QAction(QIcon("./images/open.png"),"open",self)
		tb.addAction(open)
		save = QAction(QIcon("./images/save.png"),"save",self)
		tb.addAction(save)
		tb.actionTriggered[QAction].connect(self.toolbtnpressed)
		self.setLayout(layout)
           	
	def toolbtnpressed(self,a):
		print("pressed tool button is",a.text() )
           
if __name__ == '__main__':
	app = QApplication(sys.argv)
	demo = ToolBarDemo()
	demo.show()
	sys.exit(app.exec_())

代码运行结果:
在这里插入图片描述

QStatusBar状态栏

QStatusBar状态栏作用

MainWindow对象在底部保留有一个水平条,作为状态栏(QStatusBar),用于显示永久的或临时的状态信息。

QStatusBar常用方法

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

QStatusBar代码示例

# -*- coding: utf-8 -*-

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class StatusDemo(QMainWindow):
	def __init__(self, parent=None):
		super(StatusDemo, self).__init__(parent)
		bar = self.menuBar()
		file = bar.addMenu("File")
		file.addAction("show")
		file.triggered[QAction].connect(self.processTrigger)
		self.setCentralWidget(QTextEdit())
		# 添加状态栏对象
		self.statusBar= QStatusBar()
		self.setStatusBar(self.statusBar)
		self.setWindowTitle("QStatusBar 例子")
	
	def processTrigger(self,q):
		if (q.text()=="show"):
			# 5000表示字符串在状态栏显示5s后消失
			self.statusBar.showMessage(q.text()+" 菜单选项被点击了",5000)
	    
if __name__ == '__main__':
	app = QApplication(sys.argv)
	demo = StatusDemo()
	demo.show()
	sys.exit(app.exec_())

代码运行结果:

在这里插入图片描述

举报

相关推荐

0 条评论