如何使用Python / Tkinter在文本文件中的值更改后刷新或更新框架

时间:2018-12-18 19:07:10

标签: python python-3.x tkinter refresh

所以基本上我是从一个文本文件中读取一个值,该文件使用标签显示在“配置文件”框架上。 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很陌生,所以深表歉意!

1 个答案:

答案 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重新分配给字符串。