【问题标题】:Python (Tkinter) - canvas for-loop color changePython (Tkinter) - 画布 for 循环颜色变化
【发布时间】:2015-02-09 18:50:36
【问题描述】:

我在 Tkinter 中使用 for 循环生成了一个网格,但想知道如何将点击功能绑定到这样,当我点击每个生成的矩形时,矩形会改变颜色。

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 循环来创建一个事件,如果我在这些坐标内单击,我会重新配置其中一个矩形的颜色。

【问题讨论】:

标签: python for-loop canvas tkinter


【解决方案1】:

按照 Curly Joe 的提示并犯了一些错误,我得到了以下内容,它只需要一个 tag_bind。您可能想先自己尝试一下。

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()

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多