Problem mit String in Funktion
Verfasst: Mittwoch 11. September 2019, 12:07
Hallo zusammen,
zunächst die vermutlich leidige Information: Ich bin absoluter Python-Neuling. Ich habe allerdings in Schule und Ausbildung einige Zeit programmiert (basic und c bzw. c#).
Seit gut 10 Jahren aber nur noch SPS (hauptsächlich S7). Ich hoffe einfach auf Gnade eurerseits
Ich versuche mich gerade an einem Grundkonstrukt für einen Cocktailautomaten mit einem Raspberry Pi (das Thema ist aber allg. Python).
In der GUI habe ich ein menu mit command_buttons erstellt. Dieser soll eine bestimmte Funktion ausführen und ich übergebe der Funktion einen String.
Hier ein Auszug aus dem Code: (ich hoffe ohne Syntaxfehler, sitze gerade in der Arbeit und habe hier kein IDE):
Ich weiß, dass hier noch ein Problem ist, da der command sofort ausgeführt wird. Ich hatte es mit lambda versucht, was funtkionierte, aber lambdas sind doch eigentlich nur für einmalige Aufrufe oder?
Dieses Problem versuche ich selbst noch zu lösen. Mein Ansatz ist der, dass ich den Button für Cuba Libre drücke, dadurch die Funktion "cocktail" ausführe und hier abhänghig vom String eben entscheide, welcher Cocktail gemixt wird. Der erste Aufruf läuft auch noch wie ich es mir vorstelle. Beim zweiten Aufruf zum Beispiel mit dem Button "Vodka" wird der Wert an die Funktion übergeben. Ich erwarte dann den String in der Funktion: "Vodka", allerdings lautet dieser "Vodka Libre"). Es wird also nicht die Variable neu beschrieben, sondern nur die einzelnen Zeichen werden überschrieben.
Ich hoffe, ich konnte mein Problem einigermaßen verständlich erläutern mit genügend, aber auch nicht zu viel Information.
Bestimmt ist es irgendein dummer Anfängerfehler, eben auch, dass ich die Funktion quasi sofort beim init des Buttons ausführe, ohne Argument zu übergeben wäre mir das auch sofort klar, aber so stehe ich bei beiden Dingen momentan auf dem Schlauch.
Egal wie das hier ausgeht, schonmal vielen Dank!
Manuel
zunächst die vermutlich leidige Information: Ich bin absoluter Python-Neuling. Ich habe allerdings in Schule und Ausbildung einige Zeit programmiert (basic und c bzw. c#).
Seit gut 10 Jahren aber nur noch SPS (hauptsächlich S7). Ich hoffe einfach auf Gnade eurerseits

Ich versuche mich gerade an einem Grundkonstrukt für einen Cocktailautomaten mit einem Raspberry Pi (das Thema ist aber allg. Python).
In der GUI habe ich ein menu mit command_buttons erstellt. Dieser soll eine bestimmte Funktion ausführen und ich übergebe der Funktion einen String.
Hier ein Auszug aus dem Code: (ich hoffe ohne Syntaxfehler, sitze gerade in der Arbeit und habe hier kein IDE):
Code: Alles auswählen
#diverser Code davor
def cocktail(drink):
str_cocktail = drink
#diverser Code dazwischen
hauptmenu = Menu(root, tearoff=0)
hauptmenu.add_command(label="Cuba Libre", command=cocktail("Cuba Libre")
#diverser Code danach
Dieses Problem versuche ich selbst noch zu lösen. Mein Ansatz ist der, dass ich den Button für Cuba Libre drücke, dadurch die Funktion "cocktail" ausführe und hier abhänghig vom String eben entscheide, welcher Cocktail gemixt wird. Der erste Aufruf läuft auch noch wie ich es mir vorstelle. Beim zweiten Aufruf zum Beispiel mit dem Button "Vodka" wird der Wert an die Funktion übergeben. Ich erwarte dann den String in der Funktion: "Vodka", allerdings lautet dieser "Vodka Libre"). Es wird also nicht die Variable neu beschrieben, sondern nur die einzelnen Zeichen werden überschrieben.
Ich hoffe, ich konnte mein Problem einigermaßen verständlich erläutern mit genügend, aber auch nicht zu viel Information.
Bestimmt ist es irgendein dummer Anfängerfehler, eben auch, dass ich die Funktion quasi sofort beim init des Buttons ausführe, ohne Argument zu übergeben wäre mir das auch sofort klar, aber so stehe ich bei beiden Dingen momentan auf dem Schlauch.
Egal wie das hier ausgeht, schonmal vielen Dank!
Manuel