PyQT5菜单和工具栏
*无特殊注明,所有案例只修改第一个案例的对应部分* ## 主窗口 QMainWindow提供了主窗口的功能,使用它能创建一些简单的状态栏、工具栏和菜单栏。 ## 状态栏 ```python import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import * # 继承QMainWindow,状态栏是由QMainWindow创建的 class Example(QMainWindow): # 继承父类构造 def __init__(self): super().__init__() # 使用initUI()方法创建一个GUI self.initUI() # 初始化组件 def initUI(self): # 创建状态栏,showMessage()方法在状态栏上显示一条信息 self.statusBar().showMessage('Ready') # 不注释了 self.setGeometry(300, 300, 300, 250) self.setWindowTitle('Statusbar') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() # 进入应用的主循环中,调用exit()方法或直接销毁主控件时,主循环就会结束 sys.exit(app.exec_()) ``` ![](https://blog.coolcooltomato.com/uploads/article/状态栏.png) ## 菜单栏 ```python # 初始化组件 def initUI(self): # QAction是菜单栏、工具栏或者快捷键的动作的组合 # 添加图标,文字描述 exitAct = QAction(QIcon('cat.jpg'), '&Exit', self) # 添加快捷键 exitAct.setShortcut('Ctrl+Q') # 添加状态栏动作,鼠标悬停时显示状态 exitAct.setStatusTip('Exit application') # 绑定关闭动作 exitAct.triggered.connect(qApp.quit) # 创建状态栏 self.statusBar() # 创建菜单栏 menubar = self.menuBar() # 添加一个菜单 fileMenu = menubar.addMenu('&File') # 为菜单添加动作 fileMenu.addAction(exitAct) # 不注释了 self.setGeometry(300, 300, 300, 250) self.setWindowTitle('Simple menu') self.show() ``` ![](https://blog.coolcooltomato.com/uploads/article/菜单栏.png) ## 子菜单 ```python # 初始化组件 def initUI(self): # 创建菜单栏 menubar = self.menuBar() # 添加一个菜单 fileMenu = menubar.addMenu('File') # 创建一个动作 newAct = QAction('New', self) # 使用QMenu创建一个新菜单 impMenu = QMenu('Import', self) # 创建一个动作,添加到新菜单 impAct = QAction('Import mail', self) impMenu.addAction(impAct) # 将动作和新菜单,添加到主菜单 fileMenu.addAction(newAct) fileMenu.addMenu(impMenu) # 不注释了 self.setGeometry(300, 300, 300, 250) self.setWindowTitle('Submenu') self.show() ``` ![](https://blog.coolcooltomato.com/uploads/article/子菜单.png) ## 勾选菜单 ```python # 初始化组件 def initUI(self): # 创建一个状态栏 self.statusbar = self.statusBar() self.statusbar.showMessage('Ready') # 创建一个菜单栏,添加一个菜单 menubar = self.menuBar() viewMenu = menubar.addMenu('View') # 创建一个动作,用checkable选项创建一个能选中的菜单 viewStatAct = QAction('View statusbar', self, checkable=True) # 添加状态栏动作,鼠标悬停时显示状态 viewStatAct.setStatusTip('View statusbar') # 设置默认为选中状态 viewStatAct.setChecked(True) # 将动作与函数绑定 viewStatAct.triggered.connect(self.toggleMenu) # 将动作添加到菜单 viewMenu.addAction(viewStatAct) # 不注释了 self.setGeometry(300, 300, 300, 250) self.setWindowTitle('Check menu') self.show() ``` ![](https://blog.coolcooltomato.com/uploads/article/勾选菜单.png) ## 右键菜单 ```python # 初始化组件 def initUI(self): # 不注释了 self.setGeometry(300, 300, 300, 250) self.setWindowTitle('Context menu') self.show() def contextMenuEvent(self, event): # 创建一个菜单 cmenu = QMenu(self) # 添加三个动作 newAct = cmenu.addAction("New") opnAct = cmenu.addAction("Open") quitAct = cmenu.addAction("Quit") # 使用exec_()方法显示菜单,从鼠标右键事件对象中获得当前坐标 # mapToGlobal()方法把当前组件的相对坐标转换为窗口(window)的绝对坐标 action = cmenu.exec_(self.mapToGlobal(event.pos())) # 绑定关闭事件 if action == quitAct: qApp.quit() ``` ![](https://blog.coolcooltomato.com/uploads/article/右键菜单.png) ## 工具栏 ```python # 初始化组件 def initUI(self): # 创建一个动作 exitAct = QAction(QIcon('cat.jpg'), '&Exit', self) # 设置快捷键 exitAct.setShortcut('Ctrl+Q') # 将动作与关闭事件绑定 exitAct.triggered.connect(qApp.quit) # 用addToolBar()创建工具栏 self.toolbar = self.addToolBar('Exit') # 并用addAction()将动作对象添加到工具栏 self.toolbar.addAction(exitAct) # 不注释了 self.setGeometry(300, 300, 300, 250) self.setWindowTitle('Toolbar') self.show() ``` ![](https://blog.coolcooltomato.com/uploads/article/工具栏.png)
创建时间:2023-04-18
|
最后修改:2023-12-27
|
©允许规范转载
酷酷番茄
首页
文章
友链