Herausfinden, von wo der Methodenaufruf kam

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Hallo,

ich suche einen Weg zu unterscheiden woher das Signal zum Aufruf einer Methode kam.

Habe in einer grafischen Oberfläche mehrere QLineEdit-Felder, die beim Bestätigen mit Enter alle die selbe Methode aufrufen. Kann ich nun herausfinden welche der Felder Auslöser war?
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Theoretisch gibt es die sender-Methode. Das macht man in Python aber nicht. Stattdessen nimmst du functools.partial, und erzeugst ein Argument, das die Aufrufe unterscheidbar macht. Etwa so (pseudo-code):

Code: Alles auswählen

from functools import partial
...
vorname = QLineEdit()
vorname.on_enter.connect(partial(self._edit_action, "vorname"))
nachname = QLineEdit()
nachname.on_enter.connect(partial(self._edit_action, "nachname"))

def _edit_action(self, quelle):
      print(quelle)
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nachtrag: du kannst natuerlich auch beliebig viele Argumente vorher anbinden, also zB auch die Instanzen der QLineEdits, etc. Und auch ggf. Platz lassen fuer Argumente (values usw).
Patrick1990
User
Beiträge: 116
Registriert: Freitag 3. Juni 2016, 05:45

Alles klar, vielen Dank :)
Antworten