pyqt5-右键菜单
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。作用是在鼠标位置弹出菜单,甚至可以直接设置菜单的弹出位置
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战