2011-07-20 1 views
0

J'ai une interface graphique Python qui utilise Tkinter. Je dois SSH dans un autre endroit pour obtenir des données. Je commence un nouveau thread pour faire cela afin que l'interface graphique ne se bloque pas. Pendant ce temps, je veux faire apparaître un écran qui permet à l'utilisateur de savoir qu'il se charge. Une fois que le programme a fini d'obtenir les données, je veux fermer l'écran de chargement. Que dois-je faire pour que ma boucle principale reconnaisse que le fil est fait? J'ai essayé d'utiliser ce fil pour fermer l'écran de chargement qui existe dans la boucle principale, mais j'ai ensuite découvert que cela ne fonctionne pas.Comment fermer un écran de chargement lorsque l'autre thread est terminé en Python en utilisant Tk?

J'ai vu quelques modèles de consommateurs producteurs qui n'utilisent pas d'interface graphique, et ils ont des boucles de temps. Cela ne m'aide pas cependant. Je ne veux pas non plus télécharger et installer d'autres paquets, mais les importations sont correctes. Merci de votre aide!

Répondre

0

Demandez à votre thread définir un indicateur quand c'est fait. Demandez à l'interface graphique de vérifier périodiquement l'existence de ce drapeau et de fermer la fenêtre lorsqu'elle est définie.

Vous pouvez vérifier l'indicateur en créant une fonction qui vérifie l'indicateur, et s'il n'est pas défini, il utilise after pour se lancer à nouveau quelques centaines de ms plus tard. La fenêtre ne disparaîtra pas immédiatement après la sortie du thread, mais tant que le décalage ne dépasse pas quelques centaines de ms, l'utilisateur ne le remarquera jamais.

+0

Jack pouvait-il alternativement faire en sorte que le thread secondaire déclenche un événement virtuel qui serait lié à l'interface graphique? – JAB

+0

Peut-être. Tkinter n'est pas thread-safe mais peut-être que la méthode raise ne posera pas de problèmes. Cela vaut la peine d'essayer, je suppose. –

+0

Merci Bryan! J'ai utilisé votre suggestion d'utiliser le "après" pour interroger en continu. Est-ce acceptable à long terme d'avoir ce sondage? Est-ce que ce système de déchets ressources? – Jack

Questions connexes