# Autres langages > Python > GUI >  Visibilit des variables

## tefacorp

Bonjour  tous, je viens de fraichement crer un petit programme pour concevoir un jeu sous python et le module Tkinter. Mais voila, quand j'assemble mes deux premier prototypes, voila ce que la console m'affiche :



```

```

Alors que quand j'isole le prototype d'o le problme vient, tout marche parfaitement !
Voici mon programme en entier :



```

```

Je ne comprends pas... Surtout que j'ai annoncer 'saisir' comme un textvariable.
Merci de m'aider ! Je vous serai trs reconnaissant de me sortir de ce gupier, surtout que je dois soutenir ce programme devant un jury la semaine prochaine !

----------


## PauseKawa

Bonjour tefacorp,

Dsol de le dire (Ce n'est pas un reproche, j'ai sans doute fais pire/Tkinter c'est un bon dbut, persvre) mais il y as du travail.
C'est la structure de ton code et la visibilit des variables/objet ton problme.
Si tu dplace saisir ici :


```

```

Tu vas voir que tu as d'autres problmes.

Par exemple le _fenetre_nouvelle_partie = destroy()_ j'avais jamais vus.
_fenetre_nouvelle_partie.destroy()_ par contre cela me parle.

Mme si tu corrige cela tu arrive sur un _global name 'fenetre_nouvelle_partie' is not defined_ : sympa.

C'est la structure qui est  revoir (et la porte des objets/variables).

De plus : 


```

```

Dtruire ta fentre principale (Tk, il ne dois y en avoir qu'une) et lui crer un Toplevel ?

Etc...

Regarde ce code (Pas trop mal pour un dbut) par exemple.

Avant de te lancer regarde ceci  partir d'ici mais pour ta structure ici.

Bon code

@+

----------


## tefacorp

Merci PauseKawa de me rpondre aussi rapidement.
En effet, je me suis trs vite rendu compte de mes lacunes... C'est pourquoi j'ai potasser un peu et rgler ce problme. J'ai compris qu'il fallait return des valeur aprs les fonctions pour me permettre de les rutiliser. Mais voila, j'ai un autre problme un peu plus inquitant. Mon programme marche enfin comme je le voulais sauf que dans la fonction carte_monde () tout se lance parfaitement bien sauf l'image associ au canvas : Carte monde.gif . En effet, il y apparait tout les boutons et le texte sauf la photo associ au canvas. J'ai seulement le cadre noire dlimitant le canvas. Alors qu'une nouvelle fois, quand j'isole la fonction exactement comme elle est crite ici, l'image apparait bien... Merci encore une fois de m'aider



```

```

Je prcise que la console de python ne remarque aucune erreur....  ::cry::

----------


## PauseKawa

Bonjour,

Tu as deux fentres Tk, Photoimage n'aime pas cela.
Regarde du cot de Toplevel.

@+

----------


## tefacorp

Tout d'abord encore merci pour l'aide apporter, comme tu l'as si bien dit : je dbute ! Nanmoins je ne comprends pas ce que tu veux dire : dans ma fonction carte_monde () je n'ai qu'une commande Tk() appele ! -> fenetre_carte_monde = Tk(). Et j'ai beau remplacer Toplevel () par Tk() le problme persiste : canvas noir. J'ai sans doute pas trs bien compris ce que tu veux dire, peux-tu prciser ?  ::aie::

----------


## PauseKawa

Bonsoir,



```

```

Une seule instance Tk svp. Regarde les liens.

@+

----------


## tefacorp

RAAAAA j'ai enfin compris mon erreur ! Merci pour ta patience, PauseKawa ! Voici mon programme qui fonctionne parfaitement : 





```

```

Bien  vous, TEFACORP

----------


## PauseKawa

Bonjour,

Quelques notes pour faire plus propre :

Un Toplevel n'as pas besoin de mainloop.

Si tu n'as pas besoin de le nommer par la suite pas besoin de donner un nom a tes Widgets :


```

```

Deviens :


```

```

Pourquoi le return  la fin de supprimer_partie alors que tu ne retourne rien ? Je le vois souvent dans les codes mais je ne m'en explique pas l'utilit.
Soit tu as une fonction de type


```

```

ou tu as besoin de b
Soit tu a une procdure de type :


```

```

Et la pas la peine de mettre return. Cela retourneras toujours None.

Mais je vois que tu avance. Pense a regarder le chapitre 13 que je t'ai conseiller ds que tu te le sentiras. Cela te permettras de faire quelque chose de bien plus propre.

Bon code.

----------

