对于一个 GUI 应用来说,菜单栏是很常见的,它能够满足一些最基本的操作需求。本文由Cescfangs 译自ZetCode pyqt5系列教程 并作适当修改。
import sys
from PyQt5.QtWidgets import qApp, QAction, QApplication, QMainWindow
from PyQt5.QtGui import QIcon
class exp(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.statusBar()
exitAction = QAction(QIcon('heart256.ico'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit app')
exitAction.triggered.connect(qApp.quit)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&file')
fileMenu.addAction(exitAction)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('menubar')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = exp()
sys.exit(app.exec_())
通过上面的代码,我们在菜单栏上创建了一个退出的菜单,同时还附带创建了一个状态栏,并设置了ctrl+Q
的快捷键。
exitAction = QAction(QIcon('heart256.ico'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit app')
QAction
是一个抽象基类,可以通过菜单栏、工具栏或者快捷键实现。上面的三行代码,我们创建了一个带有图标和'Exit'的菜单,同时我们还设置了执行这个命令的快捷键以及鼠标悬到这个菜单上时的提示信息。
exitAction.triggered.connect(qApp.quit)
当我们执行这个动作时,会发射一个triggered
信号,这个信号和quit()
连接,这个应用也就终止了。
menubar = self.menuBar()
fileMenu = menubar.addMenu('&file')
fileMenu.addAction(exitAction)
最后创建这个菜单栏,上面附加了一个名为'file'的菜单,然后把我们之前创建的exitAction
添加到'file'这个菜单里。