Python 使用QAction而不添加到菜单(或工具栏)

Python 使用QAction而不添加到菜单(或工具栏),python,qt,pyqt,Python,Qt,Pyqt,我正在尝试用一种非常模块化的方法开发一个应用程序来处理命令,我认为最好使用pyqt,使用QAction将快捷键绑定到命令。 但是,似乎只有当动作在菜单或工具栏中可见时,动作快捷键才起作用。有人知道如何在不可见的情况下使此操作正常工作吗? 下面是一些示例代码,显示了我正在尝试的内容。 谢谢 安德烈 from PyQt4 import * from PyQt4.QtCore import * from PyQt4.QtGui import * import sys class TesteMW(QM

我正在尝试用一种非常模块化的方法开发一个应用程序来处理命令,我认为最好使用pyqt,使用QAction将快捷键绑定到命令。
但是,似乎只有当动作在菜单或工具栏中可见时,动作快捷键才起作用。有人知道如何在不可见的情况下使此操作正常工作吗?
下面是一些示例代码,显示了我正在尝试的内容。
谢谢

安德烈

from PyQt4 import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
import sys

class TesteMW(QMainWindow):
    def __init__(self, *args):
        QMainWindow.__init__(self, *args)
        self.create_action()

    def create_action(self):
        self.na = QAction(self)
        self.na.setText('Teste')
        self.na.setShortcut('Ctrl+W')
        self.connect(self.na, SIGNAL('triggered()'), self.action_callback)
        # uncomment the next line for the action to work
        # self.menuBar().addMenu("Teste").addAction(self.na)

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


app = QApplication(sys.argv)
mw = TesteMW()
mw.show()

app.exec_()

在处理小部件之前,需要将操作添加到小部件中。从QAction的QT文档中:

使用将操作添加到小部件中 QWidget::addAction()或 QGraphicsWidget::addAction()。注 必须将操作添加到 在它可以使用之前;这是 当快捷方式应为 全局(即Qt::ApplicationShortcut 作为Qt::ShortcutContext)


这并不意味着它们将作为菜单项或任何东西可见,只是它们将作为小部件事件循环的一部分作为进程。

我刚刚发现的一点是:创建QAction时将QWidget作为其父项是不够的——您还需要在其上调用
addAction()