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

时间:2009-08-28 13:27:47

标签: python qt pyqt

我正在尝试使用一种非常模块化的命令方法来开发一个应用程序,并认为它很好,我正在使用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_()

1 个答案:

答案 0 :(得分:6)

您需要在处理小部件之前将其添加到小部件中。来自QAction的QT文档:

  

使用操作添加到窗口小部件   QWidget :: addAction()或   QGraphicsWidget ::的addAction()。注意   必须将动作添加到a   小部件才可以使用;这是   快捷方式应该是真的   全局(即Qt :: ApplicationShortcut   作为Qt :: ShortcutContext)。

这并不意味着它们将作为菜单项或其他任何内容显示 - 只是它们将作为窗口小部件事件循环的一部分进行处理。