tkinter python buttons angeklickt farbe verändern?

1 Antwort

(...) dass die buttons durch ein klick die farbe ändern. (...)

Du musst einen Event Handler an das Klickevent von jedem Button hängen. Hier findest du zum einen mehr Informationen zu Events und zum anderen, wie dein Problem gelöst werden kann:

Ausserdem soll auch noch in einer liste gespeichert werden welchen button ich angeklickt habe (...)

In dem oberen Zuge kommst du auch an eine Referenz des Buttons. Das heißt, du kannst dir seinen Namen o.ä. von ihm speichern. Die Liste sollte in diesem Kontext global (also in dem Handler) verfügbar sein, sodass du einen Wert hinzufügen kannst.

bishare 
Fragesteller
 15.12.2017, 19:13

den letzten teil verstehe ich nicht ganz bzw weiß ich nicht wie ich es jetzt realisieren soll. Angenommen ich will einfach verschiedene integer werte in die Funktion übergeben (habe jetzt mal aus dem link ein codestück kopiert)

widget.bind('<Button-1>', hello)

hier wird ja nach dem klicken die Funktion hello aufgerufen. muss ich jetzt zu der Funktion Argumente hinzufügen damit er sie der Funktion hello übergeben kann? mit

widget.bind('<Button-1>', hello(Argument))

geht's nicht.

0
regex9  15.12.2017, 22:20
@bishare

Die bind-Methode kann 2 Argumente entgegennehmen: Event und Callback. Über letzteres kannst du nun Argumente mit in die Handler-Funktion tragen:

def callback(evt, a, b):
	print (a + b)
  
widget.bind(yourButton, lambda evt, a=2, b=4: self.callback(evt, a, b));

Weiteres wird hier ausführlicher erklärt:

https://wiki.wxpython.org/Passing%20Arguments%20to%20Callbacks

0