Verwenden Sie QAction ohne Hinzufügen zum Menü (oder Symbolleiste)

Ich versuche, eine Anwendung mit einem sehr modularen Ansatz für Befehle zu entwickeln und dachte, es wäre schön, ich bin mit pyqt, um QAction zu verwenden, um Verknüpfungen zu den Befehlen zu binden.
Allerdings scheint es, dass Aktionen Verknüpfungen nur funktioniert, wenn die Aktion in einem Menü oder einer Symbolleiste sichtbar ist. Kennt jemand einen Weg, um diese Aktion zu arbeiten, ohne dass es sichtbar ist?
Unterhalb eines Beispielcodes, der zeigt, was ich versuche.
Vielen Dank,

André

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_() 

One Solution collect form web for “Verwenden Sie QAction ohne Hinzufügen zum Menü (oder Symbolleiste)”

Sie müssen Ihre Aktion zu einem Widget hinzufügen, bevor es verarbeitet wird. Aus der QT-Dokumentation für QAction:

Aktionen werden zu Widgets mit QWidget :: addAction () oder QGraphicsWidget :: addAction () hinzugefügt. Beachten Sie, dass eine Aktion zu einem Widget hinzugefügt werden muss, bevor es verwendet werden kann. Dies gilt auch, wenn die Verknüpfung global sein sollte (dh Qt :: ApplicationShortcut als Qt :: ShortcutContext).

Das bedeutet nicht, dass sie als Menüpunkt oder was auch immer sichtbar sein werden – nur dass sie Prozesse als Teil der Widgets Event Loop sind.

  • Pyside setText () nicht aktualisieren QLabel
  • Löschen Sie alle Widgets in einem Layout in pyqt
  • Einstellen von Mac OSX Application Menu Menüleiste auf andere als "Python" in meiner Python Qt Anwendung
  • Shiboken kann nicht importiert werden
  • So synchronisieren Sie mehrere Ansichten, die das gleiche Modell teilen
  • Python TypeError: __init __ () nimmt genau 4 Argumente (1 gegeben)
  • Qt Statusleiste Farbe
  • Wie man eine Widget-Höhe ein fester Anteil zu seiner Breite macht
  • Implementierung von pyqtgraph für Live-Daten-Grafik
  • Wie groß sind wie? (Python) Projekte?
  • Ist es möglich, QWebKit zur Anzeige von PDF-Dateien zu bekommen?
  • Python ist die beste Programmiersprache der Welt.