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

2024-03-28 23:57:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一种非常模块化的方法来开发一个命令应用程序,我想这会很好,因为我使用的是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_()

Tags: 方法fromimport命令selfinitdefsys
2条回答

您需要将您的操作添加到小部件中,然后才能对其进行处理。从QAction的QT文档:

Actions are added to widgets using QWidget::addAction() or QGraphicsWidget::addAction(). Note that an action must be added to a widget before it can be used; this is also true when the shortcut should be global (i.e., Qt::ApplicationShortcut as Qt::ShortcutContext).

这并不意味着它们将以菜单项或其他方式可见——只是它们将作为小部件事件循环的一部分而成为进程。在

相关问题 更多 >