pyqt5-QMenu
Posted wd404
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyqt5-QMenu相关的知识,希望对你有一定的参考价值。
1、介绍
菜单组件。有两种场景:
- 窗口的菜单栏设置一个或多个QMenu
- 其他组件绑定右键菜单,探出一个QMenu
2、类和初始化
class QMenu(QWidget):
"""
QMenu(parent: QWidget = None)
QMenu(str, parent: QWidget = None)
"""
def __init__(self, *__args):
pass
3、属性
4、方法
(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, QMenu) -> QAction
addMenu(self, str) -> QMenu
addMenu(self, QIcon, str) -> QMenu
"""
- 添加子菜单
- 会返回添加的菜单对象,可以直接使用
(3)addSeparator
- 添加分隔符,即一条横线
(4)clear
- 清除
5、事件
(1)mouseDoubleClickEvent
- 鼠标双击事件
(2)triggered
triggered(self, QAction)
- 触发事件,返回QAction对象,即触发的项。
- 即点击菜单内部的动作项触发该事件,点击该菜单本身是不会触发的
6、右键菜单示例
from PyQt5.QtCore import Qt
self.ui.plainTextEdit: QPlainTextEdit
self.ui.plainTextEdit.setContextMenuPolicy(Qt.CustomContextMenu)
self.ui.plainTextEdit.customContextMenuRequested.connect(self.plainTextEdit_rightmenu)
- 设置上下文菜单setContextMenuPolicy,必须在定义右键 菜单之前调用
- customContextMenuRequested定义右键菜单事件
def plainTextEdit_rightmenu(self, pos):
print(\'右键菜单\')
menu = QMenu(self.plainTextEdit)
menu.addAction(QAction(\'动作1\', menu))
menu.addAction(QAction(\'动作2\', menu))
menu.addAction(QAction(\'动作3\', menu))
menu.triggered.connect(self.menuSlot)
# 将菜单显示在鼠标位置
menu.exec_(QCursor.pos())
def menuSlot(self, act):
print(act.text())
如何在pyqt Qmenu中获取所选项目
【中文标题】如何在pyqt Qmenu中获取所选项目【英文标题】:how to get selected item in pyqt Qmenu 【发布时间】:2010-06-01 09:01:00 【问题描述】:有没有办法在 qmenu 中获取所选项目? 我想将该列表中的所有项目绑定到一个函数,并在用户单击它后获取该项目。 我一直在寻找一种方法来获取项目的标签或索引 3 天,但找不到。 有什么想法吗?
提前致谢
【问题讨论】:
【参考方案1】:您可以通过信号来实现这一点。
将菜单项的所有triggered
插槽连接到您的函数。然后,在这个函数中,使用静态函数QObject::sender
来检索已经发送信号的菜单项。
【讨论】:
以上是关于pyqt5-QMenu的主要内容,如果未能解决你的问题,请参考以下文章