Deux fenêtres Python
Bonjour,
j'ai fait un script qui demande deux informations à un utilisateur et fait ensuite un traitement quelconque. Pour demander les informations (disons le jour de la semaine et Mr ou Mme), je n'utilise pas un input mais une fenêtre Tkinter (pour m'entraîner, je saurais faire avec un input). J'y arrive (je mets le code à la suite), mais j'ai l'impression de faire quelque chose de très moche :
- une première fenêtre demande le jour et renvoie vers une fonction
- cette fonction détruit la première fenêtre et en affiche une seconde en demandant la civilité et renvoie vers ma fonction de traitement.
j'ai fait un script qui demande deux informations à un utilisateur et fait ensuite un traitement quelconque. Pour demander les informations (disons le jour de la semaine et Mr ou Mme), je n'utilise pas un input mais une fenêtre Tkinter (pour m'entraîner, je saurais faire avec un input). J'y arrive (je mets le code à la suite), mais j'ai l'impression de faire quelque chose de très moche :
- une première fenêtre demande le jour et renvoie vers une fonction
- cette fonction détruit la première fenêtre et en affiche une seconde en demandant la civilité et renvoie vers ma fonction de traitement.
Comme il n'y a qu'un seul choix possible pour chaque information, RadioButton me paraissait pratique. Mais comme je ne peux pas en mettre deux distincts sur une seule fenêtre (?), j'ai deux fenêtres ce qui me paraît peu pratique et surtout ça complique le code pour pas grand chose. Quel est le moyen intelligent (pas input
pour demander deux informations (sans lien entre elles) avec un choix unique à chaque fois ?

from tkinter import * #variables globales : fen1 = Tk() fen2 = Tk() jour = StringVar() jour.set('Lu') civilite = StringVar() civilite.set('Mr') def go(): print(jour.get(), civilite.get()) fen2.destroy() def affiche(): fen1.destroy() fen2.geometry('600x300') r1 = Radiobutton(fen2, text='Mr', variable=civilite, value='Mr', command=go) r1.place(x = 20, y = 50) r2 = Radiobutton(fen2, text='Mme', variable=civilite, value='Mme', command=go) r2.place(x = 20, y = 100) fen2.mainloop() fen1.geometry('600x600') jours = ['Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa', 'Di'] for i in range(7): r = Radiobutton(fen1, text=jours[i], variable=jour, value=jours[i], command=affiche) r.place(x = 20, y = 50 + 100*i) fen1.mainloop()
(Désolé pour l'absence de balise pour le code, je ne l'ai pas trouvé)
[Le lien "code" dans le menu (6ème bouton).
J'ai tenté de reconstruire l'indentation. À vérifier ! AD]
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est fonctionnel donc c'est le principal.
Pour l'esthétique, c'est plus tard ! Déja bien maitriser ce que tu fais.
-- Schnoebelen, Philippe