Как сделать задержку кода с помощью кнопки?
У меня есть кнопка, начинающая игру.
В функции начала игры идёт 3 этапа:
- Проверка списка игроков
- Вывод роли
- Начало игры
Мне как-раз нужен 2-й этап.
В нём выводится виджет label с текстом Ваша роль: *роль*.
Саму роль определяет рандом. Значение записывается в переменную my_role.
Через 5 секунд этот текст должен удалится и начаться 3 этап.
Так вот. У меня 2-й этап просто пропускается, а кнопка, начинающая игру, просто находится в состоянии нажатой как-раз эти 5 секунд. Что я делаю не так?
def startGame():
my_name = Iplayer.get()
players = newList_players.get('1.0', 'end').split('\n')
players.pop(-1)
test_repeats = set(players)
''' ПРОВЕРКА '''
if Iplayer.get() == '':
mb.showwarning('ERROR', 'Вы не указали ваш никнейм!')
elif players == ['']:
mb.showwarning('ERROR', 'Список не содержит ни одного игрока!.\nПожалуйста добавте минимум 3 игроков!')
elif '' in players:
mb.showwarning('ERROR', 'Список содержит пустые строки.\nПожалуйста удалите все пустые строки!')
elif len(test_repeats) != len(players) or Iplayer.get() in players:
mb.showwarning('ERROR', 'Список содержит повторяющиеся имена.\nПожалуйста удалите все повторы!')
elif len(players) < 3:
mb.showwarning('ERROR', """В списке недостаточно игроков!
Минимальное кол-во игроков: 3 + вы""")
else:
''' 2-ОЙ ЭТАП '''
players.insert(0, my_name)
for i in root.winfo_children():
i.destroy()
#Role
root.title('Mafia: Custom Games | test | Your Role')
if AMD == 0: # AMD - переменная с активацией меню отладки, это не нужно по вопросу
my_role = rc(roles) # rc - сокращение от импорта choice из библиотеки random
else:
active_myRole = active_role.get() # active_myRole находится в меню отладки, это не нужно по вопросу
if active_myRole != 'Random':
my_role = active_myRole
else:
my_role = rc(roles)
label = tk.Label(text = f'Ваша роль:\n{my_role}', font = ('Comic Sans MS', 50), fg = classicFG, bg = classicBG)
label.pack(anchor = 'center', expand = True)
label.after(5000, label.destroy())
''' 3-ИЙ ЭТАП '''
...