A submenu is a menu located inside another menu.
子菜单是放置在菜单下的菜单项。
子菜单要从 PyQt5.QtWidgets导入QMenu使用, QAcion专门用来给菜单等添加事件。
主菜单的生成只需要调用QMainWindow的menuBar方法既可自动生成主菜单,注意生成后还没有表现出来,必须要给主菜单先addMenu,添加菜单后才能显示。
代码:
# coding='utf-8'
from PyQt5.QtWidgets import QMainWindow, QApplication, QMenu, QAction
from PyQt5.QtGui import QIcon
import sys
class Gui(QMainWindow):
def __init__(self):
super().__init__()
self.start()
def start(self):
# 创建MainWindow菜单控件对象,(创建了就自动放置上去),\
# 但是如果不添加菜单的话还是没用
menu_bar = self.menuBar()
# 给上面创建的菜单组件添加一个菜单(此时才真的有菜单被绑定上去)
# 但是如果不给这个添加的菜单绑定任何事件,点击了没用,\
# 必须要给这个菜单添加QAction事件点击了才会有用
# addMenu后返回的是菜单对象,代表你新创建的菜单
file_menu = menu_bar.addMenu('文件')
# 创建菜单下面的子菜单
# 构造函数: QMenu(str, parent: QWidget = None)
imp_menu = QMenu('导入', self)
# 给菜单的点击绑定QAction事件
# 构造函数: QAction(str, parent: QObject = None)
imp_act = QAction('导入邮件', self)
imp_menu.addAction(imp_act)
# 给主菜单添加一个QAction,就是点击了主菜单后出现的事件,如果点击会触发
new_act = QAction('New', self)
file_menu.addAction(new_act)
file_menu.addMenu(imp_menu)
'''添加菜单和添加事件最大的区别是:添加的菜单下还可以添加菜单/事件
而添加的事件下面不能再添加菜单或事件,只能点击触发
'''
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Sub Menu')
self.show()
win = QApplication(sys.argv)
gui = Gui()
sys.exit(win.exec_())
运行结果:
image.png
网友评论