在QMainWindow类下:
方法 | 描述 |
---|---|
menuBar() | 返回主窗口的菜单栏QMenuBar对象 |
addMenu() | 在菜单中添加一个新的menu对象 |
addAction() | 对menu菜单添加操作按钮 |
setEnable() | 对menu菜单操作按钮启用/禁用 |
clear() | 删除菜单栏内容 |
setShortcut() | 将快捷键关联到操作按钮 |
setText() | 设置菜单项的文本 |
setTitle() | 设置菜单小控件的标题 |
text() | 返回与QACtion对象关联的文本 |
title() | 返回QMenu小控件的标题 |
import sys
from PyQt5.Qt import *
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, qApp, QMenu
class Example(QMainWindow):
def __init__(self, parent=None, flags=Qt.WindowFlags()):
super().__init__(parent=parent, flags=flags)
self.action_init()
self.ui_init()
def action_init(self):
exitAct = QAction(QIcon('icons/xxx.png'), 'Exit', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('Exit application')
exitAct.triggered.connect(qApp.quit)
self.exitAct = exitAct
def ui_init(self):
self.menubar_init()
self.toolbar_init()
self.statusbar_init()
# self.statusBar().showMessage("Ready") # 设置状态栏
self.setGeometry(500, 500, 1000, 400) # 设置窗体位置及大小
self.setWindowTitle("menu demo") # 设置标题
self.show()
def menubar_init(self):
menubar = self.menuBar()
filemenu = menubar.addMenu("File") #菜单file
viewmenu = menubar.addMenu("View") #菜单iew
self.menubar = menubar
filemenu.addAction('New') #菜单file的子菜单
filemenu.addAction('Open')
filemenu.addAction('Save')
filemenu.addAction('Save As')
close=QAction('Close',self)
close.setShortcut('Ctrl+Q')
filemenu.addAction(close)
edit = filemenu.addMenu('Edit') #菜单file的孙菜单
edit.addAction('Copy')
edit.addAction('Paste')
edit.addAction('Delet')
undo = QAction(QIcon('icons/xxx.png'),'Undo',self)
undo.setShortcut('Ctrl+U')
edit.addAction(undo)
filemenu.addAction(self.exitAct)
viewStatAct = QAction('View statusbar', self, checkable=True)
viewStatAct.setStatusTip('View statusbar')
viewStatAct.setChecked(True)
viewStatAct.triggered.connect(self.toggleMenu)
viewmenu.addAction(viewStatAct)
def toolbar_init(self):
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(self.exitAct)
def statusbar_init(self):
self.statusbar = self.statusBar()
self.statusbar.showMessage("Ready") # 设置状态栏
self.setStatusBar(self.statusbar)
def contextMenuEvent(self, e):
"""右键菜单"""
cmenu = QMenu(self)
newAct = cmenu.addAction("new")
openAct = cmenu.addAction("Open")
quitAct = cmenu.addAction("Quit")
action = cmenu.exec_(self.mapToGlobal(e.pos()))
if action == quitAct:
qApp.quit()
def toggleMenu(self, state):
if state:
self.statusbar.show()
else:
self.statusbar.hide()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())