fst6925 a écrit 5 commentaires

  • [^] # Re: Code

    Posté par  . 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  . 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:

    • 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:

    from tkinter import *
    import sqlite3
    import sys
    from tkinter.messagebox import *
    
    class Application(Tk):    # crée la fenêtre ppale avec le menu
    
        def __init__(self,parent):
    
            Tk.__init__(self,parent)
            self.parent=parent
            self.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()
    
        def initialize(self):
            pass
    
    class FenetreVoirSupUnite(Toplevel): #premiere fenêtre fille
    
        def __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])
            for i in range(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)
    
        def ChoixBouton(self):
    
            print(self.vargr.get())
            self.FichListe.delete(0,END)
    
            if self.vargr.get()=='A':
                nomfich='UnitProduit'
            elif self.vargr.get()=='B':
                nomfich='UnitPoso'
            else:
                nomfich='VoieAdmin'
    
            print(nomfich)  # permet de voir si ça marche
    
            self.FichListe.focus_set()    
    
        def Supprimer(self):  #fonction pas encore écrite 
    
            print("C'est fait !!!")     
    
    class FenetreAjoutUnite(Toplevel): # deuxième fenêtre fille
    
        def __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])
            for i in range(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)
    
        def ChoixBouton(self):
    
            print(self.vargr.get())
    
        def ajoute(self):
    
            if self.entree.get()=="":
              if askyesno("vous n'avez rien saisi !","Recommencer ?")==False:
                 self.destroy()
    
            else:
                if self.vargr.get()=='A':
                    nomfichier='UnitProduit'
    
                    print(nomfichier)
                elif self.vargr.get()=='B':
                    nomfichier='UnitPoso'
                    print(nomfichier)      # permet de voir si ça marche
                else:
                    nomfichier='VoieAdmin'
                    print(nomfichier)   # permet de voir si ça marche
    
    
    class MenuBar(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)        
    
    
        def ajouteUnite(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")
    
        def voirUnite(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: seek

    Posté par  . 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  . 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  . 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 ?