2015-05-14 5 views
3

Я разрабатываю автоматизированную систему посещаемости, где, когда студент просматривает свой тег RFID, его посещаемость записывается, показывая приветственное сообщение, используя всплывающее окно tkmessagebox. Пользователь не будет иметь контроль над мышью или клавиатурой, и я хотел бы оставить сообщение в течение 2 секунд и удалить окно сообщения. Есть ли способ закрыть всплывающее окно tkmessagebox, как это было предложено?закрытие tkmessagebox через некоторое время в python

ответ

1

Я не думаю, что это можно сделать с помощью tkMessageBox, потому что это создает модальный диалог, и у вас нет доступа к идентификатору виджета (чтобы он мог быть программно уничтожен).

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

from Tkinter import * 

WELCOME_MSG = '''Welcome to this event. 

Your attendance has been registered. 

Don't forget your free lunch.''' 
WELCOME_DURATION = 2000 

def welcome(): 
    top = Toplevel() 
    top.title('Welcome') 
    Message(top, text=WELCOME_MSG, padx=20, pady=20).pack() 
    top.after(WELCOME_DURATION, top.destroy) 

root = Tk() 
Button(root, text="Click to register", command=welcome).pack() 

root.mainloop() 

Вам необходимо подключить обработчик событий к обнаружению RFID. Это моделируется кнопкой в ​​приведенном выше коде, а обработчик события - это функция welcome(). В welcome() создан виджет верхнего уровня с сообщением. Виджет верхнего уровня уничтожается через 2000 миллисекунд (2 секунды) с использованием .after(), который регистрирует функцию обратного вызова, которая будет вызываться после задержки.

Смежные вопросы