Что вы хотите сделать, это отправить сообщение об уничтожении в окно после истечения времени ожидания (не забывая отменить отправку сообщения, если пользователь что-то выберет!) Tk, безусловно, способен сделать это.
# Make the timeout something like this...
$id = $widget->after(3000, sub {
$widget->destroy;
});
# To cancel, just do...
$id->cancel;
Вы также должны убедиться, что вы не блокируете, когда виджет вынужден уходить, конечно.Это также предотвращает проблемы, если кто-то убивает виджет и другими способами, так что это двойной бонус.