PYQT Pushbutton 右键菜单

Demo共两个文件: 

                        演示为pushbutton添加右键菜单。

mybutton.py 文件

# -*- coding: utf-8 -*-  
from PyQt5.QtGui  import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

class MenuButton(QPushButton):
    def __init__(self,parent = None):
        super(MenuButton,self).__init__(parent)
        self.createContextMenu()  

    def createContextMenu(self):  
        # 创建右键菜单 
        # 必须将ContextMenuPolicy设置为Qt.CustomContextMenu  
        # 否则无法使用customContextMenuRequested信号  
        self.setContextMenuPolicy(Qt.CustomContextMenu)  
        self.customContextMenuRequested.connect(self.showContextMenu) 
         
        # 创建QMenu
        self.contextMenu = QMenu(self)  
        self.actionA = self.contextMenu.addAction('动作A')  
        self.actionB = self.contextMenu.addAction('动作B')  
        self.actionC = self.contextMenu.addAction('动作C') 
        #添加二级菜单
        self.second = self.contextMenu.addMenu("二级菜单") 
        self.actionD = self.second.addAction('动作A')
        self.actionE = self.second.addAction('动作B')
        self.actionF = self.second.addAction('动作C')
        # 将动作与处理函数相关联  
        self.actionA.triggered.connect(self.actionHandler)  
        self.actionB.triggered.connect(self.actionHandler)  
        self.actionC.triggered.connect(self.actionHandler) 
        self.actionD.triggered.connect(self.actionHandler)  
        self.actionE.triggered.connect(self.actionHandler)  
        self.actionF.triggered.connect(self.actionHandler)   
  
    def showContextMenu(self, pos):  
        # 右键点击时调用的函数 
        # 菜单显示前,将它移动到鼠标点击的位置  
        self.contextMenu.exec_(QCursor.pos()) #在鼠标位置显示

    def actionHandler(self):  
        # 菜单中的具体action调用的函数 
        print("actionHandler")

    def mousePressEvent(self, event):
        # 鼠标按下
        print("mousePressEvent")
        QPushButton.mousePressEvent(self,event)
    
    def mouseReleaseEvent(self, event):
        # 鼠标松开
        print("mouseReleaseEvent")
        QPushButton.mouseReleaseEvent(self,event)

buttontest.py 文件

# -*- coding: utf-8 -*-  
import sys
from mybutton import MenuButton
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *

app=QApplication(sys.argv)

# 500*500大小的窗口
myWind = QWidget()
myWind.resize(500,500)

# 新建一个button
but1 = MenuButton()
but1.setGeometry(200,200,100,50)
but1.setText("点我有菜单")
but1.setParent(myWind)

# 显示窗口
myWind.show()
app.exec_()


效果展示:

 

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5中,可以使用QMenu和QContextMenuEvent来创建右键菜单。下面是一个示例代码,展示了如何在QWidget上创建一个简单的右键菜单: ```python from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction, QWidget from PyQt5.QtCore import Qt class MyWidget(QWidget): def __init__(self): super().__init__() self.init_ui() def init_ui(self): self.setGeometry(100, 100, 300, 200) def contextMenuEvent(self, event): # 创建右键菜单 menu = QMenu(self) # 创建菜单项 action1 = QAction("菜单项1", self) action2 = QAction("菜单项2", self) action3 = QAction("菜单项3", self) # 添加菜单项到右键菜单 menu.addAction(action1) menu.addAction(action2) menu.addAction(action3) # 在鼠标位置显示右键菜单 menu.exec_(self.mapToGlobal(event.pos())) if __name__ == "__main__": app = QApplication([]) window = QMainWindow() widget = MyWidget() window.setCentralWidget(widget) window.show() app.exec_() ``` 在这个示例中,我们创建了一个继承自QWidget的自定义小部件MyWidget。在MyWidget中,我们重写了contextMenuEvent方法,并在其中创建了一个右键菜单右键菜单中添加了三个菜单项:菜单项1、菜单项2和菜单项3。当用户在MyWidget上右击时,会触发contextMenuEvent方法,并在鼠标位置显示右键菜单。 你可以根据需要在每个菜单项的信号槽中执行自定义的操作,例如打开对话框、执行特定的功能等。 请注意,你可能需要根据你的实际需求对代码进行进一步调整和修改。这个示例提供了一个基本的框架,以帮助你开始在PyQt5中创建右键菜单

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值