====== Loi des gaz parfaits ====== #!/usr/bin/env python # -*- coding: utf-8 -*- # Programme de calculs sur la loi des gaz parfaits # GD, Ba2 chimie 2010-2011 from Tkinter import * #permet l'apparition de l'interface graphique def isolerP (): #définition de la fonction "isoler P" fen2.title("Calcul de la pression par la loi des gaz parfaits") #donne un titre à la fenêtre 2 fen2.geometry('400x100') #réglage de la dimension de la fenêtre 2 txt1 = Label(fen2, text= "Entrez ici le nombre de mole(mol):") #apparition d'un texte dans la fenêtre 2 txt2 = Label(fen2, text= "Entrez ici la Température (K):") #" " " txt3 = Label(fen2, text = "Entrez ici le Volume (m^3) :") #" " " txt1.grid(row=1, sticky=W) #position du texte 1 dans la fenêtre 2 (ligne 1 et décalé tout à gauche) txt2.grid(row=2, sticky=W) #position du texte 2 dans la fenêtre 2 (ligne 2 et décalé tout à gauche) txt3.grid(row=3, sticky=W) #position du texte 3 dans la fenêtre 2 (ligne 3 et décalé tout à gauche) n.grid(row=1, column=3) #position du cadre de la valeur à entrer (ligne 1 et colonne 3) T.grid(row=2, column=3) #" " "(ligne 2 et colonne 3) V.grid(row=3, column=3) #" " "(ligne 3 et colonne 3) button = Button(fen2, text='calculer', command=calculerP, bg="gold")#apparition du bouton "calculer" qui renvoie à la définition "calculerP" couleur or sur la fenêtre 2 button.grid(row=5, column=2) #position du bouton "calculer" (ligne 5 et colonne 2) #codage pour calculer la variable P def calculerP(): #définition de la fonction "calculer P" fen3.title("Résultat") #donne un titre à la fenêtre 3 fen3.geometry('180x30') #réglage de la dimension de la fenêtre 3 reponse= ((float(n.get())*8.314*float (T.get()))/float(V.get())) #formule calculant la variable à isoler => float permet le calcul d'un nombre à virgule flottante if reponse<0: #condition dans le cas où la réponse est négative c=Label(fen3, text="erreur", fg="red") #apparition du texte "erreur" en rouge dans la fenêtre 3 c.grid(row=0, column=1) #position du texte "erreur" (ligne 0 et colonne 1) else: #condition dans le cas où la réponse est positive a=Label(fen3,text=reponse) #apparition de la réponse du calcul dans la fenêtre 3 a.grid(row=0,column=1) #position de la réponse (ligne 0 et colonne 1) b=Label(fen3,text="Pa") #apparition de l'unité de la variable à isoler (Pa) b.grid(row=0,column=2) #position de l'unité (juste à côté de la réponse) def isolerV(): fen2.title("Calcul du volume par la loi des gaz parfaits") fen2.geometry('400x100') txt1 = Label(fen2, text= "Entrez ici le nombre de mole (mol):") txt2 = Label(fen2, text= "Entrez ici la Température (K):") txt3 = Label(fen2, text = "Entrez ici la Pression (Pa) :") txt1.grid(row=1, sticky=W) txt2.grid(row=2, sticky=W) txt3.grid(row=3, sticky=W) n.grid(row=1, column=3) T.grid(row=2, column=3) P.grid(row=3, column=3) button = Button(fen2, text='calculer', command=calculerV, bg="gold") button.grid(row=5, column=2) def calculerV(): fen3.title("Résultat") fen3.geometry('180x30') reponse= ((float(n.get())*8.314*float(T.get()))/float(P.get())) if reponse<0: c=Label(fen3, text="erreur", fg="red") c.grid(row=0, column=1) else: a=Label(fen3, text=reponse) a.grid(row=0,column=1) b=Label(fen3,text="m^3") b.grid(row=0,column=2) def isolern(): fen2.title("Calcul du nombre de mole par la loi des gaz parfaits") fen2.geometry('400x100') txt1 = Label(fen2, text= "Entrez ici la Pression (Pa):") txt2 = Label(fen2, text= "Entrez ici le Volume (m^3):") txt3 = Label(fen2, text = "Entrez ici la Température (K) :") txt1.grid(row=1, sticky=W) txt2.grid(row=2, sticky=W) txt3.grid(row=3, sticky=W) P.grid(row=1, column=3) V.grid(row=2, column=3) T.grid(row=3, column=3) button = Button(fen2, text='calculer', command=calculern, bg="gold") button.grid(row=5, column=2) def calculern(): fen3.title("Résultat") fen3.geometry('180x30') reponse= ((float(P.get())*float(V.get()))/(float(T.get())*8.314)) if reponse<0: c=Label(fen3, text="erreur", fg="red") c.grid(row=0, column=1) else: a=Label(fen3, text=reponse) a.grid(row=0,column=1) b=Label(fen3,text="mol") b.grid(row=0,column=2) def isolerT(): fen2.title("Calcul de la Température par la loi des gaz parfaits") fen2.geometry('400x100') txt1 = Label(fen2, text= "Entrez ici la Pression (Pa):") txt2 = Label(fen2, text= "Entrez ici le Volume (m^3):") txt3 = Label(fen2, text = "Entrez ici le nombre de mole (mol) :") txt1.grid(row=1, sticky=W) txt2.grid(row=2, sticky=W) txt3.grid(row=3, sticky=W) P.grid(row=1, column=3) V.grid(row=2, column=3) n.grid(row=3, column=3) button = Button(fen2, text='calculer', command=calculerT, bg="gold") button.grid(row=5, column=2) def calculerT(): fen3.title("Résultat") fen3.geometry('180x30') reponse= ((float(P.get())*float(V.get()))/(float(n.get())*8.314)) if reponse<0: c=Label(fen3, text="erreur",fg="red") c.grid(row=0, column=1) else: a=Label(fen3,text=reponse) a.grid(row=0,column=1) b=Label(fen3,text="K") b.grid(row=0,column=2) fen1=Tk() #création de l'interface graphique "fenêtre 1" fen2=Toplevel(fen1) #création de l'interface graphique "fenêtre 2" fen3=Toplevel(fen2) #création de l'interface graphique "fenêtre 3" n = Entry(fen2) #permet de définir la variable "n" T = Entry(fen2) #" " "T" V = Entry(fen2) #" " "V" P = Entry(fen2) #" " "P" fen1.title("Equation d'état des gaz parfaits") #titre de la fenêtre 1 Label(fen1, text="Veuillez choisir une inconnue à isoler").grid() #texte apparaissant sur la fenêtre 1 Button(fen1, text='Isoler P', command= isolerP, bg="yellow").grid() #création du bouton qui renvoie à la définition "isoler P" Button(fen1, text='Isoler V', command= isolerV, bg="green").grid() #" " "isoler V" Button(fen1, text='Isoler n', command= isolern, bg="blue").grid() #" " "isoler n" Button(fen1, text='Isoler T', command= isolerT, bg="red").grid() #" " "isoler T" fen1.mainloop() #permet le démarrage du programme.