从零开始学Pyqt5之【控件介绍】(17):菜单栏QMenuBar、QToolBar工具栏、QStatusBar状态栏
QMenuBar菜单栏
QMenuBar菜单栏作用
在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。
QMenu类提供了一个可以添加到菜单栏的小控件,也用于创建上下文菜单和弹出菜单。每个QMenu对象都可以包含一个或多个QAction对象或级联的QMenu对象。
添加菜单的步骤:
-
通过createPopupMenu()函数;menuBar()函数获取主窗口的QMenuBar对象;
-
通过addMenu()函数可以将菜单添加到菜单栏中;
-
然后通过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_())
代码运行结果: