• # Code

    Posté par  . Évalué à 3.

    Peux-tu nous montrer le code que tu as écrit ?
    quelle librairie graphique as-tu utilisée ? (tkinter, gtk, wxpython, … ) ?

    • [^] # Re: Code

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

        Posté par  . Évalué à -1.

        Beurk ! Ce self à trainer tout le long du code m'inspire toujours ce même écoeurement …

        • [^] # Re: Code

          Posté par  . É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  . Évalué à 6.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.