Python(Tkinter)-用于循环颜色更改的画布

Python(Tkinter)-用于循环颜色更改的画布,python,for-loop,canvas,tkinter,Python,For Loop,Canvas,Tkinter,我在Tkinter中使用for循环生成了一个网格,但我想知道如何将on-click函数绑定到该网格,以便在单击每个生成的矩形时,该矩形将改变颜色 from Tkinter import * master = Tk() def rowgen(row, col): for i in range(row): for j in range(col): w.create_rectangle(25+50*i, 25+50*j, 50+50*i, 50+50

我在Tkinter中使用for循环生成了一个网格,但我想知道如何将on-click函数绑定到该网格,以便在单击每个生成的矩形时,该矩形将改变颜色

from Tkinter import *

master = Tk()

def rowgen(row, col):
    for i in range(row):
        for j in range(col):
            w.create_rectangle(25+50*i, 25+50*j, 50+50*i, 50+50*j, fill="green")

w = Canvas(master, width=225, height=225)
w.pack()
rowgen(4, 4)


master.resizable(0,0)
mainloop()

我在想,我必须首先遍历另一个for循环来生成一个事件,如果我在这些坐标内单击,我会重新配置其中一个矩形的颜色。

通过遵循Curly Joe的提示并犯一些错误,我得到了以下结果,它只需要一个标记绑定。你可能想先自己试试

from tkinter import *

master = Tk()

def box_click(event):
    box = event.widget.find_closest(event.x, event.y)
    print(box)  # remove later
    w.itemconfig(box, fill='red')

def rowgen(row, col):
    for i in range(row):
        for j in range(col):
            w.create_rectangle(25+50*i, 25+50*j, 50+50*i, 50+50*j,
                               fill="green", tag='BOX')

w = Canvas(master, width=225, height=225)
w.pack()
rowgen(4, 4)
w.tag_bind('BOX', '<Button-1>', box_click)

master.resizable(0,0)
mainloop()
从tkinter导入*
master=Tk()
def箱_单击(事件):
box=event.widget.find_最近(event.x,event.y)
打印(框)#稍后删除
w、 itemconfig(框,fill='red')
def rowgen(行、列):
对于范围内的i(行):
对于范围内的j(列):
w、 创建矩形(25+50*i,25+50*j,50+50*i,50+50*j,
fill=“绿色”,tag='BOX')
w=画布(主版,宽度=225,高度=225)
w、 包()
罗根(4,4)
w、 标记绑定('BOX','',BOX\u单击)
主。可调整大小(0,0)
mainloop()

以下链接指向有关如何注册单击的教程。Is使用文本,但替换矩形,其功能相同