pyqt5-QMenu菜单组件
1、介绍
菜单组件。有两种场景:
- 窗口的菜单栏设置一个或多个QMenu
- 其他组件绑定右键菜单,弹出一个QMenu
class QMenu(QWidget):
"""
QMenu(parent: QWidget = None)
QMenu(str, parent: QWidget = None)
"""
def __init__(self, *__args):
pass
- parent是必须设置的,如果是窗口菜单则设置为QMenuBar的组件,右键菜单设置为触发绑定的组件
- str是在上级组件中显示该menu的文本,比如QMenuBar中的菜单,或者菜单的菜单
2、方法
(1)addAction
addAction(self, QAction)
addAction(self, str) -> QAction
addAction(self, QIcon, str) -> QAction
addAction(self, str, PYQT_SLOT, shortcut: Union[QKeySequence, QKeySequence.StandardKey, str, int] = 0) -> QAction
addAction(self, QIcon, str, PYQT_SLOT, shortcut: Union[QKeySequence, QKeySequence.StandardKey, str, int] = 0) -> QAction
- 添加动作项
- 会返回添加的动作项对象,可以直接使用
(2)addMenu
addMenu(self, menu: QMenu) -> QAction
addMenu(self, title: str) -> QMenu
addMenu(self, icon: QIcon, title: str) -> QMenu
- 添加子菜单
- 会返回添加的菜单对象,可以直接使用
(3)addSeparator
- 添加分隔符,即一条横线
(4)clear
- 清除
exec_(self) -> QAction
exec_(self, p: QPoint, action: typing.Optional[QAction] = None) -> QAction
exec_(actions: Iterable[QAction], pos: QPoint, at: typing.Optional[QAction] = None, parent: typing.Optional[QWidget] = None) -> QAction
- 加载显示菜单
- 如果没有任何参数,那么菜单将会在屏幕的右上角显示。并且,多次触发菜单,那么各菜单会同时存在。除非点击菜单选项逐一关闭,或者直接点击其它区域关闭所有菜单
- 设置QPoint参数,会在设置的位置显示。并且自动关闭上一次生成的菜单
5、事件
triggered(self, QAction)
- 触发事件,携带QAction对象,即触发的项。
- 可以是QMenu直接管理的QAction,也可以是子QMenu管理的QAction。点击子菜单本身,不会触发
hovered(self, action: QAction) [signal]
- 在组件内移动,会持续触发
- 如果要使用的话,建议搭配状态量记录当前action,只有其变化时才真正调用业务方法
mouseDoubleClickEvent(self, a0: QMouseEvent)
- 鼠标双击事件
mouseMoveEvent(self, a0: QMouseEvent)
mouseReleaseEvent(self, a0: QMouseEvent)