pyqt5-右键菜单

1、介绍

几乎任意组件都可以设置右键菜单

2、使用

2.1 事件绑定

self.window.plainTextEdit: QPlainTextEdit
self.window.plainTextEdit.setContextMenuPolicy(Qt.CustomContextMenu)
self.window.plainTextEdit.customContextMenuRequested.connect(self.plainTextEdit_rightMenu)
  • Qt是PyQt5.QtCore.Qt,注意不要导入错误
  • 第二行代码的作用是自定义上下文菜单,相当于允许该组件的菜单生成
  • 第三行代码的作用是鼠标右键点击触发事件,和普通事件没有特殊区别,是最常用的形式。实际上,也可以设置为其它事件触发,甚至使用方法直接生成菜单。
customContextMenuRequested(self, pos: QPoint) [signal]

2.2 菜单弹出

def plainTextEdit_rightMenu(self, pos: QPoint):
    menu = QMenu(self.window.plainTextEdit)
    menu.addAction('执行')
    menu.addAction('删除')

    menu.triggered.connect(self.plainTextEdit_rightMenu_triggered)
    menu.exec_(QCursor.pos())
  • 一般来说,是倾向设置在鼠标的当前位置。当然,也可以直接设置某个位置
  • 如果是鼠标右键点击事件触发,可以传递QPoint参数,表示鼠标位置。也可以直接的QCursor.pos()获取鼠标位置
  • 为了后续处理,会设置menu组件绑定处理方法

2.3 菜单项选择

def plainTextEdit_rightMenu_triggered(self, act: QAction):
    if act.text() == '打开':
        pass
  • QAction表示触发的组件,其text方法获取触发组件的文本内容
posted @ 2023-07-02 03:19  挖洞404  阅读(461)  评论(0编辑  收藏  举报