Seite 1 von 1
Einzelen Buttons in for-schleife ansprechen
Verfasst: Dienstag 8. Juni 2010, 09:09
von pythonstarter
Hallo,
habe folgendes kleines script geschrieben
Code: Alles auswählen
import tkinter
main = tkinter.Tk()
for i in range (0,3):
for a in range (0,3):
button = tkinter.Button(main, text = "Button %d/%d" %(i, a))
button.grid(row = i, column = a)
button ["bg"] = "red"
main.mainloop()
Wie kann ich denn jetzt jeden einzelnen Button ansprechen (z.B. individuelle Farbe zuweisen oder individuelles "command = xxx") - ich komme noch nicht selbst drauf.
Re: Einzelen Buttons in for-schleife ansprechen
Verfasst: Dienstag 8. Juni 2010, 09:56
von BlackJack
@pythonstarter: Wenn Du auf die Buttons später noch zugreifen willst, dann ist das wie mit allen anderen Werten die man später noch einmal braucht auch: Man muss sie sich irgendwo merken. Listen bieten sich hier zum Beispiel an, oder ein Dictioniary das Tupel von den `i` und `a` Werten auf den jeweiligen Button abbildet.
Re: Einzelen Buttons in for-schleife ansprechen
Verfasst: Dienstag 8. Juni 2010, 10:16
von wuf
Hallo pythonstarter
Hier eine mögliche Variante:
Code: Alles auswählen
# wuf_ref: button_array_01_02.py
import tkinter as tk
main = tk.Tk()
COLUMNS = 3
ROWS = 3
button_obj_list = list()
for y in range (ROWS):
x_list = []
for x in range (COLUMNS):
button = tk.Button(main, text = "Button %d/%d" %(y, x))
button.grid(row = y, column = x)
button ["bg"] = "red"
x_list.append(button)
button_obj_list.append(x_list)
button_obj_list[0][1].config(bg='yellow')
main.mainloop()
Gruß wuf

Re: Einzelen Buttons in for-schleife ansprechen
Verfasst: Dienstag 8. Juni 2010, 10:36
von wuf
....... Hier noch eine weitere Variante:
Code: Alles auswählen
# wuf_ref: button_array_01_01.py
import tkinter as tk
main = tk.Tk()
COLUMNS = 3
ROWS = 3
class MyButton(tk.Button):
def __init__(self, parent, name, x, y, **kw):
tk.Button.__init__(self, parent, text=name, **kw)
self.grid(row=y, column=x)
button_obj_list = [[MyButton(main,"Button %d/%d" % (
y, x), x, y, bg='red', fg='white') for x in range(COLUMNS)]
for y in range(ROWS)]
button_obj_list[0][1].config(bg='yellow', fg='red')
main.mainloop()
Gruß wuf
