Tkinter如何获取for循环中生成的Label变量并更新文本内容
解决方案
核心修改逻辑如下:
- 新增列表存储批量生成的门Label实例,后续可通过索引直接定位对应组件
- 给每个Label绑定鼠标左键点击事件,通过默认参数传递当前门的索引规避lambda闭包迟绑定问题
- 新增点击事件处理函数,可在函数内补充你的游戏规则校验逻辑,校验通过后直接修改对应Label的text属性为
-
修改后完整代码:
import tkinter, random window = tkinter.Tk(); window.title("Dice Game - Shut the DOOR") # 存储所有门的Label实例 door_labels = [] def roll(): result["text"] = random.randint(1,6) result_2["text"] = random.randint(1,6) # 点击门的处理函数 def click_door(door_idx): # 此处可替换为你自己的游戏规则校验逻辑 # 示例逻辑:未关闭的门点击后直接标记为关闭 if door_labels[door_idx]["text"] != "-": door_labels[door_idx]["text"] = "-" for door in range(12): number = tkinter.Label(window, text=door+1) number.grid(row=0, column=door, sticky="e") # 绑定鼠标左键点击事件,传递当前门的索引 number.bind("<Button-1>", lambda e, idx=door: click_door(idx)) # 存入实例列表方便后续调用 door_labels.append(number) result = tkinter.Label(text="-") result_2= tkinter.Label(text="-") result.grid(row=1, column=0) result_2.grid(row=1,column=1, sticky="w") dice = tkinter.Button(window, text="Roll", command=roll) dice.grid(row=2, column=0) window.mainloop()
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

