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的主要内容,如果未能解决你的问题,请参考以下文章