如何使用 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 重新分配给字符串。