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

Мне нужен мой графический интерфейс для обратной связи с пользователем. Для этого я закрашиваю фон определенной кнопки зеленым или красным цветом в соответствии с результатом определенной проверки. Моя цель - оставить зеленый цвет на несколько секунд, а затем вернуться в исходное состояние (очистить поля и восстановить исходный цвет кнопки).

Моя проблема заключается в том, что функция "after", которую я использую для задержки графического интерфейса пользователя до возвращения к графическому интерфейсу по умолчанию, не показывает до и после. Я вижу только то, что кнопка загорелась, а затем поднялась после того, как поля и кнопки уже вернулись к своим значениям по умолчанию.

Что я делаю не так?

if condition1 == condition2:
     orig_color = self.button2.cget("background")
     self.button2.config(bg='springgreen2')
     self.return2default(orig_color)
     self.after(3000) # 3 seconds delay to realize a Pass result
     # return to the defaults
     self.SN_field.delete("1.0", "end")
     self.HwVer_field.delete("1.0", "end")
     self.button2.config(bg=color)
else:
     self.button2.config(bg='red2')

1 Ответ

0 голосов
/ 06 сентября 2018

Если вы хотите, чтобы что-то произошло после задержки, переместите это «что-то» в функцию и запланируйте, чтобы оно вызывалось с помощью after. Это позволит циклу событий продолжать обрабатывать события (включая события, которые вызывают обновление дисплея).

Например:

def reset(self):
    self.SN_field.dellete("1.0", ,"end")
    self.HwVer_field.delete("1.0", "end")
    self.button2.config(bg=color)

Чтобы позвонить, используйте after:

if condition1 == condition2:
    orig_color = self.button2.cget("background")
    self.button2.config(bg='springgreen2')
    self.return2default(orig_color)
    self.after(3000, self.reset) 

Когда вы вызываете after только с временным аргументом, это приводит к тому, что вся ваша программа переходит в спящий режим, что означает, что она не может обновлять дисплей, пока он спит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...