Я пытаюсь разработать приложение с очень модульным подходом к командам и подумал, что было бы хорошо, если бы я использовал pyqt, чтобы использовать QAction для привязки ярлыков к команды.
Однако, кажется, что ярлыки действий срабатывают только тогда, когда действие отображается в меню или на панели инструментов. Кто-нибудь знает способ заставить это действие работать без его видимости?
Ниже приведен пример кода, который показывает, что я пытаюсь.
Спасибо,Использовать 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 с QWidget как его родителем - вам также нужно называть 'addAction()' на нем. –