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方法获取触发组件的文本内容