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。作用是在鼠标位置弹出菜单,甚至可以直接设置菜单的弹出位置

 

posted @   挖洞404  阅读(653)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示