Как обновить или обновить кадр после изменения значения в текстовом файле, используя Python / Tkinter - PullRequest
0 голосов
/ 18 декабря 2018

Так что в основном я читаю значение из текстового файла, который отображается в рамке профиля с помощью метки.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 голосов
/ 19 декабря 2018

Вам необходимо обновить StringVar Profile.allowance, чтобы обновить отображение на странице Profile. простой способ добавляет следующий оператор перед self.controller.show_frame(Profile) в write_to_file() из CalculateAllowance класса:

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 в строку.
...