Mainloop() a tkinter
Fermé
Hesje
Messages postés
1
Date d'inscription
lundi 5 décembre 2016
Statut
Membre
Dernière intervention
5 décembre 2016
-
Modifié par crapoulou le 5/12/2016 à 19:33
Utilisateur anonyme - 6 déc. 2016 à 19:15
Utilisateur anonyme - 6 déc. 2016 à 19:15
1 réponse
Utilisateur anonyme
6 déc. 2016 à 19:15
6 déc. 2016 à 19:15
Why mainloop ?
Traduction en français :
" La réponse à ta question initiale est tu dois appeler mainloop une et une seule fois quand ton application est prête à démarrer.
mainloop n'est pas plus qu'une boucle infinie qui ressemble à ça :
Dans ce contexte, event signifie interaction utilisateur (clique souris, touche clavier, etc) et requête de la bibliothèque Tkinter [traduction à confirmer] ou du système d'exploitation (gestionnaire de fenêtre) pour dessiner ou redessiner un widget. Si cette boucle ne tourne pas, les évènement ne seront pas réactifs. Si les évènements ne réagissent pas, rien n'apparaîtra sur l'écran et ton programme va quitter (à moins que tu as une autre boucle infinie qui tourne)."
J'ai aussi trouvé ça et notamment :
Traduction en français :
" tk.mainloop() bloque l'exécution. Ca veut dire que l'exécution de ton code python s'arrête à cette ligne. Tu peux le voir en écrivant :
Tu ne verra jamais la sortie du print. La boucle est bloquée à tk.mainloop() qui réalise elle-même une boucle infinie [MODIFICATION A LA TRADUCTION].
D'un autre côté, les méthodes update_idletasks() et update() :
...ne bloquent pas; l'exécution continue après que les méthodes soient finies, donc la boucle infinie se déroule encore et encore, ce qui fait la balle bouger.
Une boucle infinie contenant les méthodes update_idletasks() et update() peut agir comme un substitut de l'appel à tk.mainloop(). [A TRADUIRE : Note that the whole while loop can be said to block just like tk.mainloop() because nothing after the while loop will execute.]
Cependant, tk.mainloop() n'est pas un remplaçant pour ces lignes :
... mais plutôt pour :
Traduction en français :
" La réponse à ta question initiale est tu dois appeler mainloop une et une seule fois quand ton application est prête à démarrer.
mainloop n'est pas plus qu'une boucle infinie qui ressemble à ça :
while True: event=wait_for_event() event.process() if main_window_has_been_destroyed(): break
Dans ce contexte, event signifie interaction utilisateur (clique souris, touche clavier, etc) et requête de la bibliothèque Tkinter [traduction à confirmer] ou du système d'exploitation (gestionnaire de fenêtre) pour dessiner ou redessiner un widget. Si cette boucle ne tourne pas, les évènement ne seront pas réactifs. Si les évènements ne réagissent pas, rien n'apparaîtra sur l'écran et ton programme va quitter (à moins que tu as une autre boucle infinie qui tourne)."
J'ai aussi trouvé ça et notamment :
Traduction en français :
" tk.mainloop() bloque l'exécution. Ca veut dire que l'exécution de ton code python s'arrête à cette ligne. Tu peux le voir en écrivant :
while 1: ball.draw() tk.mainloop() print "hello" #NEW CODE time.sleep(0.01)
Tu ne verra jamais la sortie du print. La boucle est bloquée à tk.mainloop() qui réalise elle-même une boucle infinie [MODIFICATION A LA TRADUCTION].
D'un autre côté, les méthodes update_idletasks() et update() :
while True: ball.draw() tk.update_idletasks() tk.update()
...ne bloquent pas; l'exécution continue après que les méthodes soient finies, donc la boucle infinie se déroule encore et encore, ce qui fait la balle bouger.
Une boucle infinie contenant les méthodes update_idletasks() et update() peut agir comme un substitut de l'appel à tk.mainloop(). [A TRADUIRE : Note that the whole while loop can be said to block just like tk.mainloop() because nothing after the while loop will execute.]
Cependant, tk.mainloop() n'est pas un remplaçant pour ces lignes :
tk.update_idletasks() tk.update()
... mais plutôt pour :
while True: tk.update_idletasks() tk.update()"