QT学习之菜单栏与工具栏
作者:互联网
QT学习之菜单栏与工具栏
目录
简单菜单栏 多级菜单栏 上下菜单栏 工具栏
简单菜单栏
程序示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp from PyQt5.QtGui import QIcon import sys class Example(QMainWindow): def __init__(self): super().__init__() self.InitUI() def InitUI(self): self.statusBar().showMessage('准备就绪') self.setGeometry(300,300,400,300) self.setWindowTitle('简单菜单栏') exitAct = QAction(QIcon('exit.png'), '退出(&E)', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('退出程序') exitAct.triggered.connect(qApp.quit) menubar = self.menuBar() fileMenu = menubar.addMenu('文件(&F)') fileMenu.addAction(exitAct) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
代码解析
设置静态状态栏信息
self.statusBar().showMessage('准备就绪')
QAction是使用菜单栏,工具栏或自定义键盘快捷方式执行操作的抽象。我们创建一个具有特定图标和“退出”标签的动作。
exitAct = QAction(QIcon('exit.png'), '退出(&E)', self)
为此操作定义了快捷方式
exitAct.setShortcut('Ctrl+Q')
当我们将鼠标指针悬停在菜单项上时,“退出程序”会显示在状态栏中。
exitAct.setStatusTip('退出程序')
当我们选择这个特定的动作时,发出触发信号。 信号连接到QApplication小部件的quit()方法。 这终止了应用程序。
exitAct.triggered.connect(qApp.quit)
menuBar()方法创建一个菜单栏。
addMenu()创建文件菜单,
addAction()添加操作
menubar = self.menuBar()
fileMenu = menubar.addMenu('文件(&F)')
fileMenu.addAction(exitAct)
上面的代码中我们在退出、文件后面都增加了“&”这个符号,增加这个符号后,当我们按住“Alt+F”的时候就能快速打开文件这个菜单,同理按住“Alt+E”的时候就能退出了。
演示结果
多级菜单栏
程序示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp, QMenu from PyQt5.QtGui import QIcon import sys class Example(QMainWindow): def __init__(self): super().__init__() self.InitUI() def InitUI(self): self.statusBar().showMessage('准备就绪') self.setGeometry(300,300,400,300) self.setWindowTitle('多级菜单') exitAct = QAction(QIcon('exit.png'), '退出(&E)', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('退出程序') exitAct.triggered.connect(qApp.quit) saveMenu = QMenu('保存方式(&S)', self) saveAct = QAction(QIcon('save.png'),'保存...', self) saveAct.setShortcut('Ctrl+S') saveAct.setStatusTip('保存文件') saveasAct = QAction(QIcon('saveas.png'),'另存为...(&O)', self) saveasAct.setStatusTip('文件另存为') saveMenu.addAction(saveAct) saveMenu.addAction(saveasAct) newAct = QAction(QIcon('new.png'),'新建(&N)',self) newAct.setShortcut('Ctrl+N') menubar = self.menuBar() fileMenu = menubar.addMenu('文件(&F)') fileMenu.addAction(newAct) fileMenu.addMenu(saveMenu) fileMenu.addSeparator() fileMenu.addAction(exitAct) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
代码解析
创建退出菜单
exitAct = QAction(QIcon('exit.png'), '退出(&E)', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('退出程序')
exitAct.triggered.connect(qApp.quit)
使用QMenu创建新菜单“保存方式”
saveMenu = QMenu('保存方式(&S)', self)
创建“保存”
saveAct = QAction(QIcon('save.png'),'保存...', self)
saveAct.setShortcut('Ctrl+S')
saveAct.setStatusTip('保存文件')
创建“另存为”
saveasAct = QAction(QIcon('saveas.png'),'另存为...(&O)', self)
saveasAct.setStatusTip('文件另存为')
将“保存”和“另存为”添加到“保存方式”
saveMenu.addAction(saveAct)
saveMenu.addAction(saveasAct)
创建“新建”
newAct = QAction(QIcon('new.png'),'新建(&N)',self)
newAct.setShortcut('Ctrl+N')
创建菜单栏,并添加主菜单“文件”(一级菜单)
menubar = self.menuBar()
fileMenu = menubar.addMenu('文件(&F)')
添加“新建”、“保存方式”、“退出”三个二级菜单
addSeparator():在菜单中添加横线分隔符号
fileMenu.addAction(newAct)
fileMenu.addMenu(saveMenu)
fileMenu.addSeparator()
fileMenu.addAction(exitAct)
上下菜单栏
程序示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp, QMenu from PyQt5.QtGui import QIcon import sys class Example(QMainWindow): def __init__(self): super().__init__() self.InitUI() def InitUI(self): self.statusBar().showMessage('准备就绪') self.setGeometry(300, 300, 400, 300) self.setWindowTitle('上下文菜单') self.show() def contextMenuEvent(self, event): cmenu = QMenu(self) newAct = cmenu.addAction("新建") opnAct = cmenu.addAction("保存") quitAct = cmenu.addAction("退出") action = cmenu.exec_(self.mapToGlobal(event.pos())) if action == quitAct: qApp.quit() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
代码解析
使用上下文菜单,我们必须重新实现contextMenuEvent()方法。 使用exec_()方法显示上下文菜单 mapToGlobal()方法将窗口小部件坐标转换为全局屏幕坐标。 action = cmenu.exec_(self.mapToGlobal(event.pos())) 如果从上下文菜单返回的操作等于退出操作,我们终止应用程序。 这里我们没有对“新建”与“退出”进行操作 if action == quitAct: qApp.quit()
工具栏
程序示例
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp, QMenu from PyQt5.QtGui import QIcon import sys class Example(QMainWindow): def __init__(self): super().__init__() self.InitUI() def InitUI(self): self.statusBar().showMessage('准备就绪') self.setGeometry(300,300,400,300) self.setWindowTitle('工具栏') exitAct = QAction(QIcon('exit.png'), '退出(&E)', self) exitAct.setShortcut('Ctrl+Q') exitAct.setStatusTip('退出程序') exitAct.triggered.connect(qApp.quit) saveMenu = QMenu('保存方式(&S)', self) saveAct = QAction(QIcon('save.png'),'保存...', self) saveAct.setShortcut('Ctrl+S') saveAct.setStatusTip('保存文件') saveasAct = QAction(QIcon('saveas.png'),'另存为...(&O)', self) saveasAct.setStatusTip('文件另存为') saveMenu.addAction(saveAct) saveMenu.addAction(saveasAct) newAct = QAction(QIcon('new.png'),'新建(&N)',self) newAct.setShortcut('Ctrl+N') newAct.setStatusTip('新建文件') menubar = self.menuBar() fileMenu = menubar.addMenu('文件(&F)') fileMenu.addAction(newAct) fileMenu.addMenu(saveMenu) fileMenu.addSeparator() fileMenu.addAction(exitAct) toolbar = self.addToolBar('工具栏') toolbar.addAction(newAct) toolbar.addAction(exitAct) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
代码解析
工具栏使用addToolBar()方法创建。 我们使用addAction()向工具栏添加两个动作对象。
toolbar = self.addToolBar('工具栏') toolbar.addAction(newAct) toolbar.addAction(exitAct)
标签:__,addAction,exitAct,工具栏,QT,self,fileMenu,QAction,菜单栏 来源: https://www.cnblogs.com/-wenli/p/10349050.html