Ich habe ein QDialog-Fenster, das eine Schaltfläche zum Fortfahren hat. Die Schaltfläche "Fortsetzen" ist die Standardschaltfläche, denn wenn ich die Eingabetaste drücke, wird die Schaltfläche "Weiter" gedrückt. Ich habe etwas Seltsames entdeckt: Wenn ich dreimal die Eingabetaste drücke, drückt die Fortfahren-Taste dreimal. Wenn ich es jedoch ein viertes Mal drücke, schließt sich das ganze Fenster. Ich habe einen Abbrechen-Button direkt unter dem Fortfahren-Button, der das Fenster schließt, aber ich mache den Abbrechen-Button nicht zum Standard-Button oder so.Implementierung von keyPressEvent in QWidget
Ich wollte die keyPressEvent
überschreiben, so dass immer, wenn ich in dem Fenster bin, die Eingabetaste immer mit dem Fortfahren-Button verbunden sein wird.
Das ist, was ich jetzt haben:
class ManualBalanceUI(QtGui.QWidget):
keyPressed = QtCore.pyqtSignal()
def __init__(self, cls):
super(QtGui.QWidget, self).__init__()
self.window = QtGui.QDialog(None, QtCore.Qt.WindowSystemMenuHint)
self.ui = uic.loadUi('ManualBalanceUI.ui', self.window)
self.keyPressed.connect(self.on_key)
def keyPressEvent(self, event):
super(ManualBalanceUI, self).keyPressEvent(event)
self.keyPressed.emit(event)
def on_key(self, event):
if event.key() == QtCore.Qt.Key_Enter and self.ui.continueButton.isEnabled():
self.proceed() # this is called whenever the continue button is pressed
elif event.key() == QtCore.Qt.Key_Q:
self.window.close() # a test I implemented to see if pressing 'Q' would close the window
def proceed(self):
...
...
Dies ist jedoch nicht gerade jetzt etwas zu tun zu sein scheint. Wenn Sie 'Q' drücken, wird das Fenster nicht geschlossen, und ich kann nicht wirklich sagen, ob die Eingabetaste funktioniert oder nicht.
ich auf diese Frage sah vorher: PyQt Connect to KeyPressEvent
ich auch die gesamte Dokumentation auf Sourceprüft. Jede Hilfe würde sehr geschätzt werden!
Danke für die Antwort! Ich habe beide Wege ausprobiert und leider arbeiten beide nicht für mich. Ich werde weiter damit herumspielen und ich werde kommentieren, wenn etwas funktioniert –
Das sollte funktionieren, das ist das minimale Beispiel, das ich anbieten kann .. viel Glück :) – Achayan