# Autres langages > Python > GUI > [Python 2.X] Rafrachir un label dans une fentre (Tkinter) cre dans un Thread

## SamFisher69

Bonjour  toutes et  tous,
Peut tre, avant d'entrer dans le vif du sujet, une petite prsentation car je suis nouveau sur ce forum.
Vous pouvez m'appeler Sam et je ne suis plus tout jeune (mon premier ordinateur tait un commodore 64)
J'ai fait de la programmation dans ma jeunesse (sur le commodore 64, puis sur un Atari 1024 STF, puis Basic, Pascal, Turbo C, C++, Delphi, Visual Basic, et mme en LSE pour ceux qui connaissent) et j'ai mme eu un diplme universitaire pour a (en C++).
Mais j'ai choisi de travailler dans un autre domaine et j'ai continu de programmer  mes heures perdues. Force est de constater que quand on ne pratique pas rgulirement, on oubli rapidement...
Aujourd'hui j'ai dcid de revenir  mes premire amours, mais le langage  changer et les concepts aussi...

Je travaille sur un Raspberry Pi 2 coupl  un module GPS.
Pas de problme particulier, je rcupre bien les informations du GPS.
La o a coince, c'est quand je veux afficher ces donnes dans une fentre cre avec Tkinter
J'utilise 2 Threads :
- un qui lit les donnes GPS en permanence (Celui l je l'ai chop sur le Net)
- un autre pour afficher la fentre (Je me suis dit que ce serait un bon exercice pour comprendre les threads et se remettre dans le bain)

Mon code est le suivant :



```

```

Si vous lisez cette ligne cette ligne, c'est que peut tre que mon code n'est pas si imbuvable que a...
En rsum, mon problme est le suivant :
Soit les donnes GPS se mettent  jour dans la fentre, mais je ne peux pas quitter le programme avec le bouton FIN, soit je peux quitter le programme avec le bouton FIN (il y a une erreur en sortie, mais pour l'instant c'est un point de dtail), mais les donnes GPS ne se mettent pas  jour.
Je vois bien la diffrence qu'il y a entre ".mainloop()" et ".update_idletasks()". Le premier "lit" les vnements et donc le bouton FIN est oprationnel, le second met  jour la fentre et ses diffrents lments mais n'est pas  l'coute des vnements. Et pour autant, je n'arrive pas  m'en sortir.
Je ne vous cacherai pas que je ne suis pas trs  l'aise avec les termes modernes tels que "classe", "instance", "widget". Mais je suis prts  m'y mettre si quelqu'un peut me l'expliquer simplement...

Quoi qu'il en soit, si l'un ou l'une de vous avez une solution  m'apporter, je suis preneur.

Un grand merci  vous pour m'avoir lu jusqu' la dernire ligne, et peut tre qu'un jour je pourrai vous renvoyer la pareil

Sam

----------


## wiztricks

Salut,




> La o a coince, c'est quand je veux afficher ces donnes dans une fentre cre avec Tkinter
> J'utilise 2 Threads :
> - un qui lit les donnes GPS en permanence (Celui l je l'ai chop sur le Net)
> - un autre pour afficher la fentre (Je me suis dit que ce serait un bon exercice pour comprendre les threads et se remettre dans le bain)


Le GUI doit tre dans le thread principal (et les versions rcentes de Python vous sortiraient un message d'erreur si ce n'est pas le cas).
Un GUI est dj un mcanisme de threading dit coopratif (les threads de Threading sont un mcanisme pr-emptif). Pour tkinter,  passe par .after.




> Je ne vous cacherai pas que je ne suis pas trs  l'aise avec les termes modernes tels que "classe", "instance", "widget". Mais je suis prts  m'y mettre si quelqu'un peut me l'expliquer simplement...


Il y a de bons tutos pour !
Et une meilleure connaissance des fonctionnalits de tkinter vous permettrait de coder  bien plus simplement (et de vous apercevoir que vous n'avez pas vraiment besoin de connatre "class" et "instance" pour coder une petite application).

- W

----------


## SamFisher69

Bonjour Wiztricks et merci pour cette rponse rapide.

Je ne suis pas certain d'avoir tout compris, mais je vais me pencher sur ".after". Le livre que j'utilise (Apprendre  programmer python de Grard Swinnen) y fait rfrence. Cela devrait aider.
Pour ce qui est des tutos, auriez vous un lien  me conseiller ? 

Et encore merci pour votre aide.

Sam

----------


## wiztricks

Salut,




> Pour ce qui est des tutos, auriez vous un lien  me conseiller ?


Le Swinnen est trs bien.
Vous avez une mine de tutoriel ici.

- W

----------


## SamFisher69

Wiztricks,

Par pure vanit et aussi par fiert, voici le code que vos conseils m'ont inspir :



```

```

a fonctionne parfaitement ! Je vais enfin pouvoir dormir sereinement...
Je ne suis pas satisfait de la position des boutons, mais pour l'instant, je m'en contenterai.
Je peux maintenant passer  la phase suivante : afficher une carte, et positionner un point en fonction des coordonnes reues par le GPS.

Merci beaucoup pour votre aide.

Sam

----------

