1 回答
TA贡献1878条经验 获得超4个赞
如果您打算在创建一个小部件并将其添加到您的界面后对其进行任何操作,最好保留一个参考。
这是对您的代码的修改,它创建了一个字典button_dict来存储您的每个按钮。键是元组(row,column)。我将button_dict作为附加输入添加到您的click函数中,并修改了按钮绑定以使用 包含这个新输入lambda。
import tkinter
def click(event,button_dict):
space = event.widget
space_label = space['text']
row = space.grid_info()['row'] #get the row of clicked button
column = space.grid_info()['column'] #get the column of clicked button
button = button_dict[(row,column)] # Retrieve our button using the row/col
print(button['text']) # Print button text for demonstration
board = tkinter.Tk()
button_dict = {} # Store your button references here
for i in range(0,9): #creates the 3x3 grid of buttons
button = tkinter.Button(text = i) # Changed the text for demonstration
if i in range(0,3):
r = 0
elif i in range(3,6):
r = 1
else:
r = 2
button.grid(row = r, column = i%3)
button.bind("<Button-1>",lambda event: click(event,button_dict))
button_dict[(r,i%3)] = button # Add reference to your button dictionary
board.mainloop()
如果您只对按下的按钮感兴趣,您可以简单地访问该event.widget属性。从你的例子来看,听起来你想修改每个事件的任意数量的按钮,所以我认为字典会给你更多的通用性。
添加回答
举报