Scale command mit weiterem Argument

Fragen zu Tkinter.
Antworten
Kiwi_gamer01
User
Beiträge: 17
Registriert: Freitag 2. November 2018, 21:55

Morgen,

Ich habe 6 Slider in meinem GUI jeder soll die selbe funktion ausführen und anstatt 7 mal die selbe Funktion zu schreiben, möchte ich eine Art id den Slider(Scale) zuweißen, bzw. eine Variable von 0-5(6 Servos) mit senden. Ebenfalls brach ich auch den Wert des Silders. Also fällt lambda raus da hierbei Variable und Wert gebraucht werden. Welche Möglichkeiten habich noch außer sieben mal die selbe Funktion schreiben (copy&paste) müsste.

Bei Unklarheiten fragen! Danke!
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das geht auch mit einem lambda. Denn damit kannst du ja EINE Funktion 6 mal mit einer unterschiedlichen ID aufrufen.
Kiwi_gamer01
User
Beiträge: 17
Registriert: Freitag 2. November 2018, 21:55

OK, könntest du mirr nen Link zu nem Bsp schicken bzw ein Bsp schreiben?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

lambda: funktion(argument)
Sirius3
User
Beiträge: 18227
Registriert: Sonntag 21. Oktober 2012, 17:20

Statt lambda sollte man in dem Fall aber functools.partial benutzen.
Kiwi_gamer01
User
Beiträge: 17
Registriert: Freitag 2. November 2018, 21:55

__deets__ hat geschrieben: Mittwoch 6. Januar 2021, 18:57 lambda: funktion(argument)
Wie gesagt bei einem Wert der wie bei einem Slider übertragen wird funktioniert lambda nicht:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
    return self.func(*args)
TypeError: <lambda>() takes 0 positional arguments but 1 was given
Sirius3
User
Beiträge: 18227
Registriert: Sonntag 21. Oktober 2012, 17:20

Zeig Deinen ganzen Code und nicht nur die Fehlermeldung. Damit kann niemand was anfangen.
Aber dem Lambda fehlt ein Argument.
Kiwi_gamer01
User
Beiträge: 17
Registriert: Freitag 2. November 2018, 21:55

Sirius3 hat geschrieben: Mittwoch 6. Januar 2021, 19:05 Statt lambda sollte man in dem Fall aber functools.partial benutzen.
OK, werde es mir anschauen. Danke!
Antworten