PyQt 上下文菜单快捷方式

Posted

技术标签:

【中文标题】PyQt 上下文菜单快捷方式【英文标题】:PyQt Context Menu Shortcut 【发布时间】:2013-10-03 00:22:47 【问题描述】:

我无法理解添加到 QMenu 的 QAction 的快捷功能。让我们从一个例子开始:

from PyQt4 import QtCore, QtGui
import sys

class TestApp(QtGui.QMainWindow):
    def __init__(self, *args):
        super(TestApp, self).__init__(*args)

        #create contex menu
        self.menu = QtGui.QMenu(self)
        self.menu.addAction("testEntry", self.action, "CTRL+T")

        self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.customContextMenuRequested.connect(self.execContextMenu)

    def execContextMenu(self, point):
        self.menu.exec_(self.mapToGlobal(point))

    def action(self):
        print 'action called!'

app = QtGui.QApplication(sys.argv)
win = TestApp()
win.show()

app.exec_()

我希望 action() 在用户按下“Ctrl+T”或在调用上下文菜单后按下“Ctrl+T”时被调用。但是当我按下快捷方式时没有任何反应。但是,当我将 QAction 添加到 TestApp

act = self.menu.addAction("testEntry", self.action, "CTRL+T")
self.addAction(act)

它有效(尽管在上下文菜单打开时无效)。那我做错了什么?

我在 OSX 10.6 上使用 PyQt4

感谢您的帮助;)

【问题讨论】:

【参考方案1】:

在 Mac Qt 上,将控制键映射到 Meta 而不是 Ctrl

【讨论】:

以上是关于PyQt 上下文菜单快捷方式的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 Qt 快捷方式歧义(尤其是当快捷方式有不同的上下文时)?

无法修改git bash Windows快捷方式

常用快捷键

QMenu - 快捷方式未触发

访问 PyQt5 组件的内置快捷方式?

pyqt5-快捷键设置