所以基本上我是从一个文本文件中读取一个值,该文件使用标签显示在“配置文件”框架上。 def view_value(self): self.user = self.controller.user self.view_value()
with open(self.user + '.txt', "r") as f:
value_line = 2
for i, line in enumerate(f):
if i == value_line:
self.value.set(line)
self.value.config(textvariable=line)
当我转到另一个框架再次计算该值时,它将使用新计算的值更新文本文件。但是,当我使用“后退”按钮返回上一页时,旧值仍然存在。要显示新值,我需要重新打开/重新运行该程序。
是否可以在不重新启动应用程序的情况下在页面上显示新更新的值?我尝试调用我的view_value方法来尝试更新值,还尝试从其他类配置标签,但无法使其正常工作。
我也意识到我的代码可能存在百万错误,我对Python很陌生,所以深表歉意!
答案 0 :(得分:0)
您需要更新StringVar
Profile.allowance
以便更新Profile
页中的显示。 简单方法是在self.controller.show_frame(Profile)
类的write_to_file()
中CalculateAllowance
的{{1}}之前添加以下语句:
self.controller.frames[Profile].allowance.set(self.user_data[2])
此外,您还需要在代码中修复以下问题:
self.view_allowance()
类的view_allowance()
内部删除Profile
,因为这将导致无限递归问题。self.holiday_allowance_amount.config(textvariable=line)
中的view_allowance()
,因为它错误地将textvariable
重新分配给字符串。