(Python)
Hallo,
weiß jemand, wie ich mit Glade, wenn ich auf Signale Funktionen lege, Parameter (Zahlen, Strings) übergeben kann?
Dieses Makro ist nicht verfügbar
Dieses "Benutzerdaten" ist es nicht...
Gruß
![]() Anmeldungsdatum: Beiträge: 1936 |
(Python) Ungültiges Makro Dieses Makro ist nicht verfügbar Dieses "Benutzerdaten" ist es nicht... |
![]() Anmeldungsdatum: Beiträge: 1253 |
Gar nicht. Na gut, hier, wie man es trotzdem tut: foo.connect("bar", mycallback(mydata))
foo.connect("bar", lambda: mycallback(mydata))
|
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 1936 |
Quasi mit autoconnect dann: "function": lambda: function(data)
Und wenn ich von verschiedenen Widgets die gleiche Funktion mit anderen Paramtern aufrufen will? |
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4687 Wohnort: Berlin |
Dann hast Du drei Möglichkeiten: Die Argumente als Default-Argumente an die ``lambda``-Funktion binden, ein Funktion zu schreiben, die solche Funktionen erstellt, Stichwort "Closure", oder from functools import partial def function(data): print data def make_function(data): def f(): function(data) return f def main(): callback_a = lambda data=42: function(data) callback_b = make_function(42) callback_c = partial(function, 42) for callback in (callback_a, callback_b, callback_c): callback() |
(Themenstarter)
![]() Anmeldungsdatum: Beiträge: 1936 |
Hm - ich hab hier 5 gleiche GTK-Widgets (infobutton1 - infobutton5), die jeweils die gleiche Funktion aufrufen, allerdings mit anderen Parametern. def ausgeben: der_letzte_buchstabe_des_widgets = kriegen #wie auch immer print parameter[int(der_letzte_buchstabe_des_widgets)] Ist zwar nicht gerade sauber, tut aber. |
Ehemalige
![]() Anmeldungsdatum: Beiträge: 4687 Wohnort: Berlin |
Und warum nimmst Du nicht eine von den drei Möglichkeiten!? |
Anmeldungsdatum: Beiträge: 5792 |
Marc 'BlackJack' Rintsch hat geschrieben:
Das wäre dann ja eine saubere und funktionierende Lösung... das passt nicht zu seinen Nick 😉 @Dauerbaustelle |