【发布时间】:2021-02-09 16:14:18
【问题描述】:
所以我在更新 tkinter 函数内部的标签(我想更改文本颜色)时遇到问题。当我使用变量存储标签时它可以正常工作,但是当我使用列表来执行此操作时,它不会。这是如何定义标签的。
for i in range(9):
for a in range(9):
if (NumbersSudoku[a][i] != 0):
label_frame = Frame(root, width=35, height=35, bg="white")
label_frame.grid_propagate(False)
label_frame.grid(row=i, column=a)
label[i][a] = Label(label_frame, text=NumbersSudoku[a][i], fg="blue", borderwidth=2, width=4, height=2,
relief="groove")
label[i][a].grid(row=i, column=a)
else:
label_frame = Frame(root, width=35, height=35, bg="white")
label_frame.grid_propagate(False)
label_frame.grid(row=i, column=a)
label[i][a] = Label(label_frame, borderwidth=2, textvariable=v[i][a], relief="groove", width=4, height=2,
fg='brown')
label[i][a].grid(row=i, column=a)
print(type(label[i][a]))
gnabel = Label(root, borderwidth=2, text='', relief="groove", width=4, height=2,
fg='brown')
gnabel.grid(row=14, column=14)
这就是我定义列表的方式。
label = []
for x in range(9):
label.append([])
for y in range(9):
label[x].append([])
在函数内部打印变量类型和列表返回不同的结果,即使在函数外部检查它返回相同的
def base_info():
global gnabel
global label
print(type(gnabel)) # <class 'tkinter.Label'>
print(type(label)) # <class 'NoneType'>
............
# label[y][x] = Label(root, text=NumbersSudoku[y][x], fg="green").grid(row=y,column=x) # doesnt work
# gnabel = Label(root, text=NumbersSudoku[y][x], fg="orange").grid(row=14, column=14) # work
【问题讨论】:
-
请将代码合并成一个minimal reproducible example。
标签: python-3.x tkinter label