Ich habe eine Schaltfläche klicken, dass ich Ereignisse ändern möchte, wenn die Taste gedrückt wird. Eine minimale Version des vorhandenen Code sieht wie folgt aus:pyqt4: Wie ändert man ein Button-Event, ohne ein neues Event hinzuzufügen?
# Event that happens the first time
def first_event(self):
button.setText("Second Event")
button.clicked.connect(second_event)
# Event that happens the second time
def second_event(self):
button.setText("First Event")
button.clicked.connect(first_event)
button = QtGui.QPushButton("First Event")
button.clicked.connect(first_event)
Leider statt Ändern das Ereignis, das es passiert, einfach fügt und Ereignis zum geklickt Signal, was bedeutet, dass das passiert folgendes:
Erste-Taste drücken - ruft first_event
Second-Taste drücken - ruft first_event und second_event
Thi rd Taste drückt - ruft first_event zweimal und second_event
etc ...
Mein gewünschtes Verhalten wäre es, die Taste Änderungsfunktionen zu haben, wenn es gedrückt wird, so dass das resultierende Verhalten sei:
Erste-Taste drücken - ruft first_event
Second-Taste drücken - ruft second_event
dritte Taste drücken - ruft first_event
etc ...
Gibt es eine Möglichkeit, es zu machen, so dass es das Click-Ereignis ändert, statt einen neuen hinzuzufügen? Gibt es eine Möglichkeit, Ereignisse nach der Tat zu entfernen?
Sie sollten versuchen zu erklären, welches spezifische Problem Sie damit lösen möchten. Es ist aller Wahrscheinlichkeit nach nicht der richtige Weg. – ekhumoro
Alles, was ich will, ist eine Schaltfläche, die Funktionen ändert, wenn sie angeklickt wird. Stellen Sie sich eine Wiedergabetaste auf einer TV-Fernbedienung vor: Wenn Sie sie einmal drücken, wird sie abgespielt, aber wenn Sie sie erneut drücken, wird sie angehalten. Es ändert seine Verwendung, wenn es gedrückt wird. –
In diesem Fall brauchen Sie nur ein einfaches Flag, um den aktuellen Status zu speichern. – ekhumoro