我正在用tkinter创建一种基于按钮的绘画,所以我想给每个按钮一个命令来绘画自己。
for i in range(xc*yc): grid.append(Button(wn,text=" ",bg="white",padx=5,pady=5)) grid[-1].config(command = paint(i)) <--???? grid[-1].place(x= (i%xc) * 30 +60, y = (math.floor(i/xc) * 30)+30)
问题是每一个按钮都会收到 "paint(i) "命令,其最终值为i,所以每次它给最后一个按钮上色的时候
使用root.update()方法可以预见性地更新UI,所以你可以用它来查看for循环的每一次迭代,如果你在for循环中调用它的话。
也许是这样的
for i in range(xc*yc):
button = Button(wn,text=" ",bg="white",padx=5,pady=5)
grid.append(button)
button.config(command = paint(i, button)) # note the additional reference to button here!
button.place(x= (i%xc) * 30 +60, y = (math.floor(i/xc) * 30)+30)
会有帮助的。