【发布时间】:2023-04-06 03:06:01
【问题描述】:
我正在使用 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)
问题是每个按钮都会收到最终值为 i 的命令“paint(i)”,所以每次它都会绘制最后一个按钮
【问题讨论】:
-
您的代码不会有上述输出,因为
paint(i)将在分配给command选项时执行。您提到的输出将在使用grid[-1].config(command=lambda: paint(i))时发生。要解决此问题,请使用grid[-1].config(command=lambda i=i: paint(i))。
标签: python button tkinter command self