【发布时间】:2020-03-24 14:10:32
【问题描述】:
我正在尝试创建 18 x 18 的标签网格,并让每个标签都有一个 Enter 和 Leave 事件。但是当我编写代码时,它只会为网格中的最后一个标签创建一个事件。我在这里没有得到什么?
附言 对不起,如果代码很乱,我学习 Python 才 1 个月
from tkinter import *
import string
root = Tk()
sequence_lst = list(string.ascii_letters)
execute = 0
num = 2
while execute < 3:
for i in range(len(sequence_lst)):
sequence_lst.append(sequence_lst[i]*num)
execute += 1
num += 1
sequence_lst = sequence_lst[:324]
position_x = 0
position_y = 0
square_lst = []
while position_x < 18:
for i in range(18):
if position_y < 18:
square = Label(root, width=2, borderwidth=1, relief='solid')
square.grid(row=position_x, column=position_y)
position_y += 1
square_lst.append(square)
else:
position_y = 0
position_x += 1
for sequence in sequence_lst:
sequence = square_lst[sequence_lst.index(sequence)]
sequence.bind('<Enter>', lambda event: sequence.configure(bg='blue'))
sequence.bind('<Leave>', lambda event: sequence.configure(bg='white'))
root.mainloop()
【问题讨论】: