J'utilise Python ver 3.3.4 et tkinter comme librairie graphique.
Je travaille sous Mac OSX El Capitan
Le programme est encours d'écriture et je n'ai pas fait encore toutes les fonctions.
Au passage qques autres petits problèmes:
pas moyen de modifier l'aspect des boutons : les paramètres bg, fg, relief etc ne semblent pas être pris en compte ?
pas moyen de créer une classe de type Menu:le menu ,bien que correctement scripté, ne s'affiche pas.
Le module ppal s'appelle EssaiClasses.py (essai parce que je suis débutant) et voici le script:
fromtkinterimport*importsqlite3importsysfromtkinter.messageboximport*classApplication(Tk):# crée la fenêtre ppale avec le menudef__init__(self,parent):Tk.__init__(self,parent)self.parent=parentself.initialize()self.title("Utilisation et posologie des molécules 'bizarres'")larg=self.winfo_screenwidth()haut=self.winfo_screenheight()self.geometry("{}x{}+{}+{}".format(larg,haut,0,0))self.resizable(width=True,height=True)self.config(bg="light blue")mBar=MenuBar(self)mBar.pack()definitialize(self):passclassFenetreVoirSupUnite(Toplevel):#premiere fenêtre filledef__init__(self,boss,**Arguments):Toplevel.__init__(self,boss,**Arguments)self.title("Voir les unités ou les voies d'administration")self.geometry("550x200+400+300")self.Cadre=Frame(self,bg='light green',relief=RAISED,border=2)self.Cadre.pack(side=LEFT,padx=5,pady=5)self.CadreListe=Frame(self,bg='light green',relief=RAISED,border=2)self.CadreListe.pack(side=RIGHT,padx=5,pady=5)self.FichListe=Listbox(self.CadreListe,bg='light green',fg='blue',relief=SUNKEN)self.FichListe.pack(padx=5,pady=5)self.CadreBou=Frame(self,bg='light green',relief=RAISED,border=2)self.CadreBou.pack(side=BOTTOM,pady=10)self.val=['A','B','C']self.etiq=['Unité du principe actif ','Unité de posologie '," Voie d'administration"]self.vargr=StringVar()self.vargr.set(self.val[1])foriinrange(3):b=Radiobutton(self.Cadre,variable=self.vargr,text=self.etiq[i],value=self.val[i],bg='light green',command=self.ChoixBouton).pack(side=TOP)self.bou=Button(self.CadreBou,text="Supprimer",relief=GROOVE,command=self.Supprimer)self.bou.pack(side=BOTTOM,padx=5,pady=5)defChoixBouton(self):print(self.vargr.get())self.FichListe.delete(0,END)ifself.vargr.get()=='A':nomfich='UnitProduit'elifself.vargr.get()=='B':nomfich='UnitPoso'else:nomfich='VoieAdmin'print(nomfich)# permet de voir si ça marcheself.FichListe.focus_set()defSupprimer(self):#fonction pas encore écrite print("C'est fait !!!")classFenetreAjoutUnite(Toplevel):# deuxième fenêtre filledef__init__(self,boss,**Arguments):Toplevel.__init__(self,boss,**Arguments)self.title("Ajout d'une unité ou d'une voie d'administration")self.geometry("550x200+400+300")self.Cadre=Frame(self,bg='light green',relief=RAISED,border=2)self.Cadre.pack(padx=5,pady=20)self.val=['A','B','C']self.etiq=['Unité du principe actif ','Unité de posologie '," Voie d'administration"]self.vargr=StringVar()self.vargr.set(self.val[1])foriinrange(3):b=Radiobutton(self.Cadre,variable=self.vargr,text=self.etiq[i],value=self.val[i],bg='light green',command=self.ChoixBouton).pack(side=LEFT)self.enonce=Label(self,text="Nouvelle unité : ",bg="light green",fg="blue")self.enonce.pack(fill=X)self.entree=Entry(self,width=15,bg="light yellow",relief="groove")self.entree.pack(padx=50,pady=10)self.entree.focus_set()self.bou=Button(self,text="Enregistrer",relief="groove",command=self.ajoute)self.bou.pack(side=BOTTOM,pady=10)defChoixBouton(self):print(self.vargr.get())defajoute(self):ifself.entree.get()=="":ifaskyesno("vous n'avez rien saisi !","Recommencer ?")==False:self.destroy()else:ifself.vargr.get()=='A':nomfichier='UnitProduit'print(nomfichier)elifself.vargr.get()=='B':nomfichier='UnitPoso'print(nomfichier)# permet de voir si ça marcheelse:nomfichier='VoieAdmin'print(nomfichier)# permet de voir si ça marcheclassMenuBar(Frame):def__init__(self,boss=None):Frame.__init__(self,borderwidth=10,bg='light yellow')fileMenu=Menubutton(self,text="Molécules",bg='yellow')fileMenu.pack(side=LEFT)me1=Menu(fileMenu)me1.add_command(label='Nouvelle',underline=2,command=boss.quit)me1.add_command(label='Voir-Modifier',underline=3,command=boss.quit)me1.add_command(label='Effacer',underline=1,command=boss.quit)me1.add_command(label='Quitter',underline=1,command=boss.quit)fileMenu.configure(menu=me1)self.esp=Menubutton(self,text='Espèces',bg='red')self.esp.pack(side=LEFT,padx='6')me1=Menu(self.esp)me1.add_command(label='Nouvelle',command=boss.quit)me1.add_command(label='Voir-Modifier',command=boss.quit)me1.add_command(label='Supprimer',command=boss.quit)self.esp.configure(menu=me1)self.Unit=Menubutton(self,text="Unités/Voie d'administration",bg='green')self.Unit.pack(side=LEFT,padx='6')me1=Menu(self.Unit)me1.add_command(label="Nouvelle unité",command=self.ajouteUnite)me1.add_command(label='Voir-Supprimer',command=self.voirUnite)self.Unit.configure(menu=me1)self.Calcul=Menubutton(self,text='Calcul',bg='blue')self.Calcul.pack(side=LEFT,padx='6')me1=Menu(self.Calcul)me1.add_command(label='Nouveau calcul',command=boss.quit)self.Calcul.configure(menu=me1)defajouteUnite(self):# appel d'une fenêtre fille mais efface la fenêtre fille déjà affichée : je veux les 2 !!!!!!fen=FenetreAjoutUnite(app,bg="light green")defvoirUnite(self):# appel d'une autre fenêtre fille mais efface la fenêtre fille déjà affichée : je veux les 2 !!!!!!fenVoir=FenetreVoirSupUnite(app,bg="light green")if__name__=="__main__":app=Application(None)app.mainloop()
[^] # Re: Code
Posté par fst6925 . En réponse au message Affichage simultané de plusieurs fenêtres filles.. Évalué à 2. Dernière modification le 27 juin 2016 à 19:10.
J'utilise Python ver 3.3.4 et tkinter comme librairie graphique.
Je travaille sous Mac OSX El Capitan
Le programme est encours d'écriture et je n'ai pas fait encore toutes les fonctions.
Au passage qques autres petits problèmes:
Le module ppal s'appelle EssaiClasses.py (essai parce que je suis débutant) et voici le script: