Python 如何更新Tkinter标签中的类对象属性

Python 如何更新Tkinter标签中的类对象属性,python,tkinter,Python,Tkinter,我一直在尝试用python制作一个团队排名工具。我制作了一个团队类,它具有影响力量属性的不同属性。我想用tkinter以图形化的方式列出从最高实力到最低实力的球队,即使我改变了一些球队的属性。我使用带有团队名称、级别和实力的标签作为文本。我希望在更改团队名称或实力时更新这些标签。当我向GUI添加团队属性时,它当前不会更新。由于我还是Tkinter和Python的初学者,我想知道我的代码有什么问题,以及如何修复它。这是我的密码: # Graphical configuration root = T

我一直在尝试用python制作一个团队排名工具。我制作了一个团队类,它具有影响力量属性的不同属性。我想用tkinter以图形化的方式列出从最高实力到最低实力的球队,即使我改变了一些球队的属性。我使用带有团队名称、级别和实力的标签作为文本。我希望在更改团队名称或实力时更新这些标签。当我向GUI添加团队属性时,它当前不会更新。由于我还是Tkinter和Python的初学者,我想知道我的代码有什么问题,以及如何修复它。这是我的密码:

# Graphical configuration
root = Tk()
root.title('Robot scouting software\u00A9')
teamtype = 'Competition home'



if teamlisted == need:
    team = Teamsort()

#Competition homepage

g = StringVar()
#Rank Labels
ordinals = ['st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th']
for x in range(0, len(team)):
    g.set(team[x].name)
    Label(root, text = str(x+1)+ordinals[x%10]+' '*(4-len(str(x)))+g.get()+4*' '+str(team[x].strength)).grid(row = x%(len(team)//3+1), column = 2*(x//(len(team)//3+1)))

#black boxes to separate teams

for x in range(0, len(team)):
    Label(root, text = '    ', bg = 'Black').grid(row = x%(len(team)//3+1),
                                                  column = 2*(x//(len(team)//3+1))+1)



root.mainloop()

当用于设置其文本元素的变量更改时,Tkinter不会重新绘制。相反,您需要使用变量类。如果您不想更新标签(比如对列表重新排序),则需要使用
trace
方法

资料来源:

这是我的第一个堆栈溢出问题,因此如果我需要更新我的问题或做一些不同的事情,请告诉meDon不要对你自己的问题发表评论如果没有人提出任何问题,只需编辑它,而且这太大了,将其拆分为不起作用的较小部分OK,感谢您让我知道我必须为跟踪中的回调编写什么样的函数?在这种情况下,我不会实际使用它。我只需要在你用来更改StringVar的任何函数中对你的列表重新排序。如果我更改了团队的名称,会发生什么?它仍然不会显示?我制作了一个excel电子表格来包含团队数据;然后使用pandas将其加载到我的程序中。通过这种方式,我可以编辑电子表格中的数据,然后将最终版本加载到python中以对列表进行重新排序。不确定这是否是最简洁的方法,但它对我有效。