Python >> Tutoriel Python >  >> Python

Fermer automatiquement la fenêtre après un certain temps

N'utilisez pas time.sleep() avec tkinter. Appelez plutôt la fonction after sur le widget que vous souhaitez fermer.

Voici l'exemple le plus simple :

import tkinter as tk

w = tk.Tk()
w.after(30000, lambda: w.destroy()) # Destroy the widget after 30 seconds
w.mainloop()

Le problème ici est que mainloop() ne revient pas tant que l'interface graphique n'est pas fermée.

Donc, 30 secondes après l'interface graphique s'est arrêtée et s'est détruite, vous essayez de la détruire. Et évidemment cela échoue.

Mais vous ne pouvez pas simplement déplacer le sleep et destroy appelle à l'intérieur de la boucle principale, car si vous sleep au milieu de la boucle principale, l'interface graphique se fige.

Donc, vous avez besoin d'une sorte de minuterie qui n'arrêtera pas la boucle principale. tkinter inclut le after méthode dans ce but précis. Cette réponse donne un exemple détaillé de son utilisation.