QMenuBar菜单栏
QMenuBar菜单栏作用
在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。
QMenu类提供了一个可以添加到菜单栏的小控件,也用于创建上下文菜单和弹出菜单。每个QMenu对象都可以包含一个或多个QAction对象或级联的QMenu对象。
添加菜单的步骤:
- 通过createPopupMenu()函数;menuBar()函数获取主窗口的QMenuBar对象;
- 通过addMenu()函数可以将菜单添加到菜单栏中;
- 然后通过addAction()函数可以在菜单中进行添加选项的操作。
QMenuBar常用方法
注:单击任何QAction按钮时,QMenu对象都会发射triggered信号。
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常用方法
每当单击工具栏中的按钮时,都将发射actionTriggered信号。
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_())
代码运行结果: