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

使用列表创建Tkinter Label时触发AttributeError的问题求助

问题原因分析

你遇到的AttributeError: 'int' object has no attribute 'config'错误,核心是二维列表的索引不匹配,导致你调用config的元素还是初始的整数0,而非Label对象。

具体来看:

  1. 你初始化classnumlabel为[[0 for i in range(6)] for j in range(8)],这是一个8行(索引0-7)、6列(索引0-5)的二维列表,所有元素初始值为0。
  2. 创建Label时,循环用的是for i in range(1, 8)(行索引1-7)、for j in range(1, 6)(列索引1-5),也就是说只有classnumlabel[1-7][1-5]被赋值为Label对象,第0列(索引0)和第0行(索引0)的元素仍然是初始的0。
  3. 最后修改文本的循环里,i的范围是range(5)(即0-4),访问classnumlabel[j][i]会命中classnumlabel[j][0]——这个位置的元素还是整数0,自然没有config方法。
修复方案

调整修改文本时的索引对应关系,确保访问的是已经被赋值为Label的位置:

原错误循环:

for i in range(5):
    for j in range(1, 8):
        dir = db.reference(selectclass +'/'+ day[i] +'/'+ 'class' + str(j))
        print(selectclass +'/'+ day[i] +'/'+ 'class' + str(j))
        classnumlabel[j][i].config(text=dir.get())

修改后:

for i in range(5):
    for j in range(1, 8):
        dir = db.reference(selectclass +'/'+ day[i] +'/'+ 'class' + str(j))
        print(selectclass +'/'+ day[i] +'/'+ 'class' + str(j))
        # 将i+1,对应创建Label时的列索引1-5
        classnumlabel[j][i+1].config(text=dir.get())

另外,建议初始化二维列表时直接匹配实际使用的索引范围,避免冗余的0元素,让逻辑更清晰:

# 行索引0-6对应原j=1-7,列索引0-4对应原i=1-5
classnumlabel = [[0 for i in range(5)] for j in range(7)]
# 创建Label时改用0-based索引
for j in range(7):
    for i in range(5):
        classnumlabel[j][i] = Label(win, width=10, text="value")
        classnumlabel[j][i].grid(row=j+5, column=i+2)
# 修改文本时直接对应索引
for i in range(5):
    for j in range(7):
        dir = db.reference(selectclass +'/'+ day[i] +'/'+ 'class' + str(j+1))
        classnumlabel[j][i].config(text=dir.get())

内容的提问来源于stack exchange,提问作者YoulmooSelf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:06:32