【发布时间】:2018-12-17 20:38:59
【问题描述】:
这是代码:
for row in results:
ColumnCounter += 1
id_list.append(row['ID'])
#print(id_list) # DEBUG
tk.Label(DisplayWindow, text=str(RowCounter - 1), fg="black", font="none 8 bold").grid(row=RowCounter, column=ColumnCounter, sticky=W)
ColumnCounter += 1
firstname_list.append(row['FIRST_NAME'])
#print(firstname_list) # DEBUG
tk.Label(DisplayWindow, text=firstname_list[ListCounter], fg="black", font="none 8 bold").grid(row=RowCounter, column=ColumnCounter, sticky=W)
ColumnCounter += 1
surname_list.append(row['SURNAME'])
#print(surname_list) # DEBUG
tk.Label(DisplayWindow, text=surname_list[ListCounter], fg="black", font="none 8 bold").grid(row=RowCounter, column=ColumnCounter, sticky=W)
ColumnCounter += 1
username_list.append(row['USERNAME'])
#print(username_list) # DEBUG
tk.Label(DisplayWindow, text=username_list[ListCounter], fg="black", font="none 8 bold").grid(row=RowCounter, column=ColumnCounter, sticky=W)
ColumnCounter += 1
email_list.append(row['EMAIL'])
#print(email_list) # DEBUG
tk.Label(DisplayWindow, text=email_list[ListCounter], fg="black", font="none 8 bold").grid(row=RowCounter, column=ColumnCounter, sticky=W)
tk.Button(DisplayWindow, text="Select Row", command=lambda CurrentValue=row: [SelectRow(CurrentValue['ID'], CurrentValue['FIRST_NAME'], CurrentValue['SURNAME'], CurrentValue['USERNAME'], CurrentValue['EMAIL']), DisplayWindow.destroy()]).grid(row=RowCounter, column=ColumnCounter + 1, sticky=E)
RowCounter += 1
ColumnCounter = -1
ListCounter += 1
每次重新运行此 for 循环时,标签都不会正确更新其文本。它显示旧文本中的一半内容和新文本中的一半内容。我尝试在所有标签中用textvariable=SomeStringVariable_Name (StringVar) 替换文本,但同样的问题。我该如何解决这个问题?
(变量 results 是一个字典。更准确地说,它是一个 MySQL 数据库的 fetchall。)
【问题讨论】:
-
你没有更新任何东西。您只需在旧的小部件之上创建新的小部件。
标签: python python-3.x for-loop tkinter label