lambda mehrere funktionen auf einmal ausführen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HardwareManager
User
Beiträge: 59
Registriert: Freitag 31. Mai 2013, 21:18

meine frage ist:
Wie kann ich mit tkinter zwei befehele mit einem button machen?
Ich habe etwas gelesen von lambda aber da kann ich bis jetzt nur einen Befehl ausführen.
Wie kann man mit lambda zwei befehle ausführen?
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
BlackJack

@HardwareManager: Definiere einfach eine normale, benannte Funktion oder Methode.
HardwareManager
User
Beiträge: 59
Registriert: Freitag 31. Mai 2013, 21:18

Aber in dieser Methode kann ich dann nicht so etwas wie

Code: Alles auswählen

root.destroy
machen, oder was meinst du?
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
BlackJack

@HardwareManager: Wenn `root` irgendwie als Argument in die Funktion oder Methode kommt dann schon.
HardwareManager
User
Beiträge: 59
Registriert: Freitag 31. Mai 2013, 21:18

Bei einem Button muss man ja dann lambda verwenden:

Code: Alles auswählen

button = Button(root, text='Ok', width=25, command=lambda: print("hallo"))
und kann man lambda nicht irgendwie dazu bringen zwei Befehle auszuführen?
also das "hallo" geprintet wird und das root kaputt gemacht wird?
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
BlackJack

@HardwareManager: Nein da *muss* man *nicht* einen ``lambda``-Ausdruck verwenden. Da kann man jedes beliebige aufrufbare Objekt übergeben. Eben auch benannte Funktionen oder Methoden.

Code: Alles auswählen

from functools import partial

# ...

def print_and_destroy(widget):
    print('Hallo')
    widget.destroy()

# ...
    
    button = Button(root, text='Ok', width=25, command=partial(print_and_destroy, root))
HardwareManager
User
Beiträge: 59
Registriert: Freitag 31. Mai 2013, 21:18

DANKE!! ES GEHT <3 <3 <3
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
Antworten