Seite 1 von 1

Wie kann ich der Funktion end_fun Übergabeparameter übergebe

Verfasst: Dienstag 8. Mai 2012, 11:01
von winterfest
Hallo,
ich bin auf der Suche nache einer Möglichkeit Übergabeparameter für die Funktion, die beim Beenden des Fensters (Tkinter) aufgerufen wird zu übergeben.

hier ein Code-beispiel:

Code: Alles auswählen

main_window[0].protocol('WM_DELETE_WINDOW', end_fun, [verbindung_zu_IPCModul])
Wie kann ich der Funktion end_fun Übergabeparameter übergeben?

So wie oben geht es nicht.

Grüße

Re: Wie kann ich der Funktion end_fun Übergabeparameter über

Verfasst: Dienstag 8. Mai 2012, 11:17
von Hyperion
Heißt das Ding evtl. `end_func`? ;-)

Wenn Du das dynamisch regeln willst, dann kannst Du per `functools.partial` ein Callable erzeugen, welches die Funktion mit vorher definierten Parametern aufrufbar macht.

Nebenbei sehe ich aus Deinem Code-Beispiel nicht, wie Du das bisher versucht hast...

... und Fettdruck muss eigentlich nicht sein. Wir können bei so einem kleinen Beitrag schon die wichtigen Sachen heraus filtern ;-)

Re: Wie kann ich der Funktion end_fun Übergabeparameter über

Verfasst: Dienstag 8. Mai 2012, 12:47
von winterfest
Hallo,

ich habe versucht die Parameter

main_window[0].protocol('WM_DELETE_WINDOW', end_fun, [verbindung_zu_IPCModul])

so zu übergeben

Grüße

Re: Wie kann ich der Funktion end_fun Übergabeparameter über

Verfasst: Dienstag 8. Mai 2012, 12:54
von Hyperion
Genau das *so* hättest Du erklären sollen... :roll: Als Parameter willst Du also eine Liste mit einem Element übergeben, also diesen Teil:

Code: Alles auswählen

[verbindung_zu_IPCModul]
Das hätte doch schon als Erklärung ausgereicht! Natürlich habe ich mir das schon oben gedacht, aber ein wenig Präzision schadet eben nicht, wenn man Hilfe will! Wie können ja nicht ahnen, das `verbindung_zu_IPCModul` (ziemlich sperriger Name btw) nun genau der Parameter ist, den Du an `end_func` übergeben willst :roll:

Naja, ich habe Dir ja eine Lösung bereits verraten ;-)

Re: Wie kann ich der Funktion end_fun Übergabeparameter über

Verfasst: Dienstag 8. Mai 2012, 13:20
von winterfest
Wie auch immer....

ich habe es nun so gemacht.

Code: Alles auswählen

main_window[0].protocol('WM_DELETE_WINDOW', lambda:end_fun(verbindung_zu_IPCModul))
Danke für die Hilfe und Grüße

Re: Wie kann ich der Funktion end_fun Übergabeparameter über

Verfasst: Dienstag 8. Mai 2012, 13:23
von winterfest
@Hyperion... kannst Du Deine Lösung mal beschreiben?

Danke

Re: Wie kann ich der Funktion end_fun Übergabeparameter über

Verfasst: Dienstag 8. Mai 2012, 13:38
von BlackJack

Code: Alles auswählen

from functools import partial

# ...

main_window.protocol('WM_DELETE_WINDOW', partial(end_func, ipc_connection))