You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 20:24:04