import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class MenuDemo(QMainWindow):
def __init__(self, parent=None):
super(MenuDemo, self).__init__(parent)
self.resize(300, 200)
# 设置菜单栏
layout = QHBoxLayout()
bar = self.menuBar() # 必须是QMainWindow才能设置菜单栏
file = bar.addMenu('File') # 在菜单栏中添加一个新的菜单对象
file.addAction('New') # 在菜单中添加一个行为
file.addAction('show')
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.prcesstrigger) # 接受行为对象
self.setWindowTitle('menu例子')
# 设置工具栏
tb = self.addToolBar('Tool') # 设置工具栏
new = QAction(QIcon('dp.png'), 'new', self)
tb.addAction(new)
save = QAction(QIcon('dp.png'), 'save', self)
tb.addAction(save)
open = QAction('open', self)
tb.addAction(open)
tb.actionTriggered[QAction].connect(self.toolbtnpressed)
# 设置状态栏
self.statusBar = QStatusBar() # 设置状态栏
self.setStatusBar(self.statusBar)
self.setLayout(layout)
def prcesstrigger(self,q):
print(q.text()+'is trigered')
if (q.text() == 'show'):
self.statusBar.showMessage(q.text()+'菜单选项被点击了', 5000)
def toolbtnpressed(self, a):
print('pressed tool button is', a.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = MenuDemo()
demo.show()
sys.exit(app.exec_())