1、介绍
pyqt支持两种类型的菜单,窗口的菜单和右键菜单。这里阐述右键菜单的使用。
2、右键触发
from PyQt5.QtCore import Qt
self.ui.plainTextEdit: QPlainTextEdit
self.ui.plainTextEdit.setContextMenuPolicy(Qt.CustomContextMenu)
self.ui.plainTextEdit.customContextMenuRequested.connect(self.plainTextEdit_rightmenu)
def print(self, pos):
pass
- 右键触发需要两行代码,不能缺失。注意Qt是从PyQt5.QtCore引入
- 这行代码的两个方法,都是在QWidget中声明,即几乎所有可见组件都能够使用右键触发
- 右键触发并不一定要求是做右键菜单,也可以是其它功能的方法
- 右键触发绑定方法,需要一个参数,用于接收右键点击时鼠标位置
3、右键菜单
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()
- 实际上,菜单的触发也可以是左键点击、双击、鼠标移动、键盘按下等其他事件。只是相对右键菜单更常见和符合交互习惯。
- triggered事件是鼠标点击菜单的项触发
- exec_方法中参数可以是基于QCursor.pos直接获取,也可以是右键触发时传递的参数pos。作用是在鼠标位置弹出菜单,甚至可以直接设置菜单的弹出位置
标签:触发,菜单,menu,self,pyqt5,右键,plainTextEdit From: https://www.cnblogs.com/wd404/p/17362095.html