如何使用 Python/Tkinter 在文本文件中的值更改后刷新或更新框架
How to refresh or update frame after value changes in text file using Python/Tkinter
所以基本上我是从一个文本文件中读取一个值,该文件使用标签显示在配置文件框架上。
def view_value(自我):
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)
当我转到不同的框架再次计算这个值时,它会用新计算的值更新文本文件。但是,当我使用后退按钮返回上一页时,旧值仍然存在。为了让新值出现,我需要 reopen/re-run 程序。
是否可以在不重启应用程序的情况下让页面显示最新更新的值?我已尝试调用我的 view_value 方法来尝试更新值,还尝试从另一个 class 配置标签,但无法使其正常工作。
我也意识到我的代码可能有上百万个错误,我对 Python 很陌生,所以很抱歉!
您需要更新 StringVar
Profile.allowance
才能更新 Profile
页面中的显示。 简单的方法是在self.controller.show_frame(Profile)
in write_to_file()
of CalculateAllowance
self.controller.show_frame(Profile)
之前添加以下语句 class:
self.controller.frames[Profile].allowance.set(self.user_data[2])
您还需要修复代码中的以下问题:
- 删除
Profile
view_allowance()
中的 self.view_allowance()
调用 class 因为它会导致无限递归问题。
- 删除
view_allowance()
中的 self.holiday_allowance_amount.config(textvariable=line)
,因为它错误地将 textvariable
重新分配给字符串。
所以基本上我是从一个文本文件中读取一个值,该文件使用标签显示在配置文件框架上。 def view_value(自我): 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)
当我转到不同的框架再次计算这个值时,它会用新计算的值更新文本文件。但是,当我使用后退按钮返回上一页时,旧值仍然存在。为了让新值出现,我需要 reopen/re-run 程序。
是否可以在不重启应用程序的情况下让页面显示最新更新的值?我已尝试调用我的 view_value 方法来尝试更新值,还尝试从另一个 class 配置标签,但无法使其正常工作。
我也意识到我的代码可能有上百万个错误,我对 Python 很陌生,所以很抱歉!
您需要更新 StringVar
Profile.allowance
才能更新 Profile
页面中的显示。 简单的方法是在self.controller.show_frame(Profile)
in write_to_file()
of CalculateAllowance
self.controller.show_frame(Profile)
之前添加以下语句 class:
self.controller.frames[Profile].allowance.set(self.user_data[2])
您还需要修复代码中的以下问题:
- 删除
Profile
view_allowance()
中的self.view_allowance()
调用 class 因为它会导致无限递归问题。 - 删除
view_allowance()
中的self.holiday_allowance_amount.config(textvariable=line)
,因为它错误地将textvariable
重新分配给字符串。