Si tu n'as que de prétentieux commentaires à proposer, tu ferais mieux de t'abstenir : tout le monde n'est pas un génie de la programmation comme toi et si tu es tellement ecoeuré, va vomir ailleurs.
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()
Ainsi pour modifier un enregistrement il faudrait que je crée un nouvel enregistrement avec les données modifiées et que je supprime l'enregistrement d'origine….
Il n'y a donc pas de méthode directe ?
[^] # Re: Code
Posté par fst6925 . En réponse au message Affichage simultané de plusieurs fenêtres filles.. Évalué à 0.
Si tu n'as que de prétentieux commentaires à proposer, tu ferais mieux de t'abstenir : tout le monde n'est pas un génie de la programmation comme toi et si tu es tellement ecoeuré, va vomir ailleurs.
[^] # 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:
[^] # Re: seek
Posté par fst6925 . En réponse au message Fichiers textes et binaires. Évalué à 1.
Merci pour les renseignements.
Je vais essayer comme tu le conseilles (petit fichier en RAM et Base de données pour plus gros fichiers).
A +
[^] # Re: seek
Posté par fst6925 . En réponse au message Fichiers textes et binaires. Évalué à 1.
Par exemple un petit fichier client dont chaque enregistrement serait une liste contenant le nom, le prénom, l'adresse (=> fichier en mode b).
le jour ou le client déménage je dois pouvoir modifier l'adresse dans le fichier.
Il me parait bien évident que passer par une base de donnée serait mille fois plus intéressant mais j'aime bien chercher la petite bête .
Merci pour les réponses.
[^] # Re: seek
Posté par fst6925 . En réponse au message Fichiers textes et binaires. Évalué à 1.
Merci pour la réponse.
Ainsi pour modifier un enregistrement il faudrait que je crée un nouvel enregistrement avec les données modifiées et que je supprime l'enregistrement d'origine….
Il n'y a donc pas de méthode directe ?