Parameterübergabe von Signal und eigener Funktion

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Freak1
User
Beiträge: 2
Registriert: Mittwoch 19. Oktober 2011, 09:33

Hey Leute,
das Forum hat mir schon ein wenig weitergeholfen aber nun hab ich doch mal eine Frage.
Ich habe eine Oberfläche, die eine Liste von Buttons, ComboBoxen und anderen Objekten besitzt. Nun möchte ich mithilfe einer Auswahl in der ComboBox z.B. eine dazugehörige CeckBox ansprechen aber immer dieselbe Methode verwenden, da ich sonst n Methoden benötigen würde die eigentlich alle dasselbe machen.
Ich möchte per connect ein Signal und einen eigenen Parameter an die aufzurufende Funktion übergeben.

Wenn ich kein Parameter im Signal (z.B.:clicked) habe per functools.partial() kein Problem:

Code: Alles auswählen

self.button_con_field[i].clicked.connect(partial(self.getConnectButton, i))
aber wie kann ich bei einem Signal, das selbst auch einen Parameter mitbringt meinen eigenen einschleusen?

Code: Alles auswählen

# die folgende Codezeile klappt natürlich nicht sondern dient nur zum Verständnis meines Problems
self.combobox_vehicle_field[i].activated(int).connect(partial(self.selectedVehicle, i))
Hier nochmal die Funktion die dann aufgerufen werden soll:

Code: Alles auswählen

# in marker steckt der 'int'-Wert um herauszufinden welches Fahrzug in der ComboBox ausgewählt wurde. In 'conID' ist die ID des Fahrzeugs selbst, um die weiteren Schritte in der Funktion richtig umzusetzen.
def selectedVehicle(self, marker, conID):
    ....
Bin für jeden Hinweis dankbar!
Zuletzt geändert von Freak1 am Donnerstag 20. Oktober 2011, 10:41, insgesamt 1-mal geändert.
lunar

@Freak1: Die Signatur eines Signals wählt mit mit eckigen Klammer aus:

Code: Alles auswählen

self.combobox_vehicle_field[i].activated[int].connect(partial(self.selectedVehicle, i))
In dieser Form sollte diese Zeile funktionieren.

Für die Zukunft: Es wäre hilfreich gewesen, zu erwähnen, dass es sich hier um eine Oberfläche mit Qt handelt, und welche Anbindung – PySide oder PyQt – verwendet wird. Wir können nicht hellsehen, und Qt ist beileibe nicht das einzige Toolkit. Auch hilft es, eine Frage zu Qt auch im entsprechenden Unterforum zu stellen, so dass diejenigen, die sich mit Qt auskennen, die Frage auch finden.
Freak1
User
Beiträge: 2
Registriert: Mittwoch 19. Oktober 2011, 09:33

Ja, jetzt klappt der Aufruf.
Danke!

Ich werd mir deine Hinweise für die Zukunft merken! :wink:
Antworten