pyqt 禁止右键菜单_pyqt右键菜单 - Sophia_tj的个人空间 - OSCHINA - 中文开源技术交流社区...

本文介绍了如何在PyQt中禁止或自定义右键菜单,通过设置Qt::ContextMenuPolicy来控制组件的右键行为。示例代码展示了使用Qt::CustomContextMenu创建并关联处理函数的方法。
摘要由CSDN通过智能技术生成

从Qt文档Qt::ContextMenuPolicy的值可以看出,实现右键菜单的方式有三种,这对于所有继承于QWidget的类都是通用的,在用每一种方式实现之前都要调用QWidget::setContextMenuPolicy(Qt::ContextMenuPolicy)方法,将要需要设置右键菜单的组件的ContextMenuPolicy值设为相应的值,下面我分享一下用Qt::CustomContextMenu方式实现右键菜单的例子,用的是python语言,因为python比较简单。

#coding=utf-8

import sys

from PyQt4 import QtGui

from PyQt4.QtCore import Qt

class MainWindow(QtGui.QMainWindow):

def __init__(self):

super(MainWindow, self).__init__()

self.createContextMenu()

def createContextMenu(self):

'''

创建右键菜单

'''

# 必须将ContextMenuPolicy设置为Qt.CustomContextMenu

# 否则无法使用customContextMenuRequested信号

self.setContextMenuPolicy(Qt.CustomContextMenu)

self.customContextMenuRequested.connect(self.showContextMenu)

# 创建QMenu

self.contextMenu = QtGui.QMenu(self)

self.actionA = self.contextMenu.addAction(u'动作A')

self.actionB = self.contextMenu.addAction(u'动作B')

self.actionC = self.contextMenu.addAction(u'动作C')

# 将动作与处理函数相关联

# 这里为了简单,将所有action与同一个处理函数相关联,

# 当然也可以将他们分别与不同函数关联,实现不同的功能

self.actionA.triggered.connect(self.actionHandler)

self.actionB.triggered.connect(self.actionHandler)

self.actionB.triggered.connect(self.actionHandler)

def showContextMenu(self, pos):

'''

右键点击时调用的函数

'''

# 菜单显示前,将它移动到鼠标点击的位置

self.contextMenu.move(self.pos() + pos)

self.contextMenu.show()

def actionHandler(self):

'''

菜单中的具体action调用的函数

'''

print 'action handler'

if __name__=='__main__':

app = QtGui.QApplication(sys.argv)

window = MainWindow()

window.show()

sys.exit(app.exec_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值