例子
在此示例中,首先存储对顶级窗口的 QMenuBar 对象(必须是 QMainWindow 对象)的所有引用。
文件菜单通过 addMenu() 方法添加到菜单栏。
file = bar.addMenu("File")
菜单中的操作按钮可以是字符串或 QAction 对象。
file.addAction("New")
save = QAction("Save",self)
save.setShortcut("Ctrl+S")
file.addAction(save)
子菜单被添加到顶级菜单。
edit = file.addMenu("Edit")
edit.addAction("copy")
edit.addAction("paste")
文件菜单发出的trigger() 信号连接到processtrigger() 方法,该方法接收引起信号的QAction 对象。
file.triggered[QAction].connect(self.processtrigger)
完整的代码如下 -
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 = bar.addMenu("File")
file.addAction("New")
save = QAction("Save",self)
save.setShortcut("Ctrl+S")
file.addAction(save)
edit = file.addMenu("Edit")
edit.addAction("copy")
edit.addAction("paste")
quit = QAction("Quit",self)
file.addAction(quit)
file.triggered[QAction].connect(self.processtrigger)
self.setLayout(layout)
self.setWindowTitle("menu demo")
def processtrigger(self,q):
print q.text()+" is triggered"
def main():
app = QApplication(sys.argv)
ex = menudemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()