Einzelen Buttons in for-schleife ansprechen

Fragen zu Tkinter.
Antworten
pythonstarter
User
Beiträge: 53
Registriert: Donnerstag 15. April 2010, 20:34

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.
Zuletzt geändert von Anonymous am Dienstag 8. Juni 2010, 09:54, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
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.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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 :wink:
Take it easy Mates!
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

....... 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 :wink:
Take it easy Mates!
Antworten