Seite 1 von 1

Aufrufende "Funktion" auswerten

Verfasst: Sonntag 12. Januar 2020, 17:30
von theoS
Hallo. Bin in Python ein wenig unbedarft. Jetzt beschäftigt mich ein "Problem", das mich jetzt hauptsächlich aus Interesse beschäftigt.
Ich habe einen Button programmiert, der ruft nach Anklicken eine Funktion auf, die später mal was ausführen soll. Um das mal auszuprobieren hab ich einfach eine Funktion gebastelt die aus einer Liste einen Wert ausgibt je nach Knopfdruck.
Den Knopfdruck hab ich mir so zusammengeklaut:

Code: Alles auswählen

B1 = Button(buttonFrame, text=li[0], bg="#f2c618", width=15, height=10, command=lambda:callback1(0))
B1.grid(row=0, column=0, padx=0, pady=0)
meine Funktion die dann den Wert ausspuckt so:

Code: Alles auswählen

def callback1(a):
    strPaul=li2[a]
    print(strPaul)
Jetzt meine Frage: könnte ich das nicht so lösen, dass ich statt der Übergabe des Parameters mit der lambda-Funktion einfach den Namen der Übergebenden Funktion (hier der Button mit B1) auszulesen. Hab ja für jeden Button ein solches Konstrukt.
Leider habe ich momentan keine Idee, wonach in dem Fall suchen, drum täte mir ein Verweis auf das nötige Stichwort vermutlich schon gute Dienste.
Danke.

Re: Aufrufende "Funktion" auswerten

Verfasst: Sonntag 12. Januar 2020, 21:15
von __deets__
Wenn du mehr übergeben willst, mach das doch. Das lambda kann deinen callback doch mit beliebig vielen Argumenten aufrufen. Warum du das willst ist mir allerdings nicht so klar.

Re: Aufrufende "Funktion" auswerten

Verfasst: Sonntag 12. Januar 2020, 21:50
von theoS
Danke für die Antwort.
__deets__ hat geschrieben: Sonntag 12. Januar 2020, 21:15 Wenn du mehr übergeben willst, mach das doch. Das lambda kann deinen callback doch mit beliebig vielen Argumenten aufrufen. Warum du das willst ist mir allerdings nicht so klar.
Ja, das kann ich schon, stimmt.
Mich interessiert das einfach.
Und, ich wollte das mal auf diese Weise probieren. Wenn das Projekt flexibler werden soll, kann ich das vermutlich dort schon gebrauchen.

Re: Aufrufende "Funktion" auswerten

Verfasst: Sonntag 12. Januar 2020, 22:14
von __deets__
Ich habe nicht wirklich verstanden was genau du da erreichen willst. Oder war der Hinweis erstmal genug?

Re: Aufrufende "Funktion" auswerten

Verfasst: Sonntag 12. Januar 2020, 22:46
von theoS
Ich habe nicht wirklich verstanden was genau du da erreichen willst. Oder war der Hinweis erstmal genug?
Danke nochmal für die Antwort.

Das ist wie gesagt, eine Interessensfrage:
Kann man irgendwie auslesen, welche Funktion eine bestimmte andere Funktion aufgerufen hat.
In meinem Fall, welcher der 10 Buttons die Funktion aufruft.
Also, dass ich statt eines jeweils spezifischen Parameter einfach den Buttonnamen auswerte.

Re: Aufrufende "Funktion" auswerten

Verfasst: Sonntag 12. Januar 2020, 22:48
von __deets__
Nein. Weil deine Annahme die umliegende Funktion hätte den callback aufgerufen schon falsch ist. Aufgerufen wird der durch das GUI Toolkit von irgendwo. Aber wer den callback REGISTRIERT hat kannst du eben durch die von mir genannte Technik mitteilen. Oder auch welcher Button das war. Oder wie deine Oma heißt. Schlussendlich beliebige Informationen. Wozu das dann gut ist musst du selbst wissen.

Re: Aufrufende "Funktion" auswerten

Verfasst: Sonntag 12. Januar 2020, 22:54
von theoS
OK, danke. Dann ist meine Frage geklärt.