我正在尝试使用一种非常模块化的命令方法来开发一个应用程序,并认为它很好,我正在使用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_()
Run Code Online (Sandbox Code Playgroud)
您需要先将操作添加到窗口小部件,然后才能处理它.来自QA的QT文档:
使用QWidget :: addAction()或QGraphicsWidget :: addAction()将操作添加到窗口小部件.请注意,必须先将操作添加到窗口小部件才能使用它; 当快捷方式应该是全局的(即Qt :: ApplicationShortcut为Qt :: ShortcutContext)时也是如此.
这并不意味着它们将作为菜单项或其他任何东西可见 - 只是它们将作为窗口小部件事件循环的一部分进行处理.
| 归档时间: |
|
| 查看次数: |
2744 次 |
| 最近记录: |