# Autres langages > Python > GUI > [Python 3.X] Aide tkinter / questionnaire

## Yoduma

Bonjour,
J'ai quelques bases en python sur des instructions simple (niveau scolaire), mais je souhaiterais en savoir un peu plus.
J'ai fait un petit programme de rvision qui fonctionne correctement, mais maintenant, je voudrais faire une interface graphique pour ce programme.
J'ai commenc  faire quelques tests avec tkinter (j'arrive  avoir une interface potable, qui correspond  ce que je souhaite mais je n'arrive pas  faire fonctionner le programme avec cette interface).

1er programme (sans tkinter) :



```

```

interface que j'ai obtenue avec tkinter :



Si quelqu'un peu m'aid, je suis preneur de toutes infos !!

----------


## bistouille

Salut,




> 1er programme (sans tkinter)


C'est le problme, si tu ne montres pas ce que tu as fait avec tkinter, en dtaillant les parties o tu n'arrives pas  y intgrer ton code, personne ne pourras t'aiguiller.

----------


## Yoduma

Oui dsol, j'avais oubli de mettre le code avec tkinter ^^.

Donc voici le code (Le code n'est pas propre. J'ai fais des tests avec tkinter dans tous les sens)  :



```

```

Mes problmes sont nombreux :
La premire partie fonctionne correctement (quand je coche un radiobutton pour choisir un thme et que je clique sur valider, le choix du questionnaire est correctement excut).
Mais ensuite, je ne connais pas la mthodologie pour que le reste fonctionne (choix alatoire de la question, affichage de la question dans le cadre "Question", comment rcuprer la rponse saisi dans le champ pour rpondre, etc).

----------


## bistouille

La premire chose flagrante c'est que l'endroit o doit s'afficher ta question est bien trop troit, faut que tu revoies l'agencement des lments de ta fentre, pour a prend une feuille, un crayon et rflchis  cette organisation.

Il faut galement ajouter un bouton pour que l'utilisateur puisse valider sa rponse.

Sachant que ce n'est pas un qcm :



```

```

Pourquoi un IntVar, la rponse doit tre du texte non ?

Maintenant, tu rcupres une liste de question dans ta fonction resultat_choix (qui sera  revoir ultrieurement), donc de l il te suffit de choisir un lment avec random.choice (tu verras plus tard pour viter de poser les mmes questions) et de l'affecter  ton label o doit tre affiche ta question, un simple ton_label.configure suffit  le faire, et pour la rponse, tu peux crer une variable globale pour l'y stocker.

Mais dj repense ta fentre.
Et nommes tes variables correctement, par exemple au lieu de cadre6, utilise cadreReponse.

----------


## Yoduma

J'ai revu le positionnement des lments dans la fentre :

----------


## Yoduma

Mais je n'arrive pas tout  fait  le faire^^(je narrive pas  modifier la taille de mes "frame" et  les placer correctement).

Et j'ai renomm les variables :



```

```

----------


## bistouille

Le truc, c'est que les frames tkinter ne sont pas des conteneurs sur lesquels on peut fixer des dimensions, il s"adaptent toujours  ce qu'ils contiennent, peu importe les dimensions que l'on a spcifies, c'est un comportement trs chiant.

Mais il y a diverses solutions pour contrer ce comportement par dfaut, n'utilisant jamais pack, je ne pourrais te dire, mais j'ai dj vu des solutions utilisant ce layout manager, fais une recherche.

Ou alors change pour grid que je trouve plus modulable, avis personnel.

----------


## wiztricks

Salut,




> Le truc, c'est que les frames tkinter ne sont pas des conteneurs sur lesquels on peut fixer des dimensions, il s"adaptent toujours  ce qu'ils contiennent, peu importe les dimensions que l'on a spcifi, c'est un comportement trs chiant.


Il suffit de demander au gestionnaire de placement (pack ou grid) de ne pas propager les dimensions du contenu au contenant.
Exemple:


```

```

- W

----------


## bistouille

Oui, je savais pour grid car je l'ai dj utilis, mais comme je ne connat pas pack du tout, je ne savais pas s'il y avait l'quivalent.

Merci de l'info  ::P:

----------


## Yoduma

J'ai fais quelques modification :



```

```

Je sais pas si j'ai utilis les bonnes mthodes mais je trouve qu'il y a du mieux  ::D:  .

----------


## bistouille

Oui, c'est mieux, mais y'a encore des trucs  rgler.

Maintenant, ton code peut tre factoris en utilisant un dictionnaire pour tes questions.

De faon  obtenir :



```

```

Comme a, pour gnrer tes radiobutton, une simple boucle suffira (transforme ton IntVar en StringVar).



```

```

idem pour tout ce qui suivra, l'avantage de faire ainsi, est que si tu ajoutes des domaines de questions dans ta variable questions tu n'auras pas  toucher au reste du code, en ajoutant d'autres radiobuttons, etc. 

Donc ta fonction choix aura juste pour mission de transmettre le domaine choisi  une autre fonction qui s'occupera d'afficher la 1re question (et ventuellement stocker la rponse dans une variable globale), donc la mme qui sera utilise par ton bouton de la question suivante.

Ton bouton valider la question, aura pour mission de vrifier si la rponse est bonne et mettre  jour le score.

C'est un gros rsum, mais dans l'ensemble, a devrait se rsumer  a pour la base.

A toi de jouer  ^^

----------

