from Tkinter import*# importation de la bibliotheque graphique Tkinter def fen1(): fenetre1=Tk()# creation d'une fenetre fenetre1.title('Surface') fenetre1.geometry("400x200+400+200")
#-------------------------------------------------------------------------------
# Name: Puissances des locaux
# Purpose:
#
# Author: Damien PUAUD
#
# Created: 23/10/2014
# Copyright: (c) dpu 2014
# Licence: <your licence>
#-------------------------------------------------------------------------------
def main():
pass
if __name__ == '__main__':
main()
#-*- coding : Latin -1 -*-
import os
from Tkinter import*# importation de la bibliotheque graphique Tkinter
def fen1():
fenetre1=Tk()# creation d'une fenetre
fenetre1.title('Surface')
fenetre1.geometry("400x200+400+200")
etiquette=Label(fenetre1)# creation d'une etiquette
etiquette.configure(text='Quel est le nom du local?',fg='blue')
etiquette.pack()
saisir=StringVar()#prévoir la variable pour recevoir le texte saisi
saisir.set("")
saisie=Entry(fenetre1,textvariable=saisir,justify=CENTER)# creation d'une zone de saisie
saisie.configure(fg='red',bd=5)
saisie.pack() #integration du widget dans la fenetre
etiquette1=Label(fenetre1)# creation d'une etiquette
etiquette1.configure(text='Quel est la surface du local?',fg='blue')
etiquette1.pack()
saisir1=StringVar()#prévoir la variable pour recevoir le texte saisi
saisir1.set("")
saisie1=Entry(fenetre1,textvariable=saisir1,justify=CENTER)# creation d'une zone de saisie
saisie1.configure(fg='red',bd=5)
saisie1.pack() #integration du widget dans la fenetre
bouton=Button(fenetre1)# creation d'un bouton
bouton.configure(text='Quitter',bg='white',command=fenetre1.destroy,underline=0)#underline = soulignage lettre
bouton.pack()
def nom_du_local_fen1_saisir():
xnom=(saisir.get())
return (eval(xnom))
def surface_du_local_fen1_saisie():
xsurf=(saisie.get())
return (eval(xsurf))
def fen2():
fenetre2=Tk()# creation d'une fenetre
fenetre2.title('Définition de la surface')
fenetre2.geometry("400x200+400+200")
etiquette=Label(fenetre2)# creation d'une etiquette
etiquette.configure(text='Quel est le nom du local?',fg='blue')
etiquette.pack()
saisir=StringVar()#prévoir la variable pour recevoir le texte saisi
saisir.set("")
saisie=Entry(fenetre2,textvariable=saisir,justify=CENTER)# creation d'une zone de saisie
saisie.configure(fg='red',bd=5)
saisie.pack() #integration du widget dans la fenetre
etiquette1=Label(fenetre2)# creation d'une etiquette
etiquette1.configure(text='Quel est la largeur du local?',fg='blue')
etiquette1.pack()
saisir1=StringVar()#prévoir la variable pour recevoir le texte saisi
saisir1.set("")
saisie1=Entry(fenetre2,textvariable=saisir1,justify=CENTER)# creation d'une zone de saisie
saisie1.configure(fg='red',bd=5)
saisie1.pack() #integration du widget dans la fenetre
etiquette2=Label(fenetre2)# creation d'une etiquette
etiquette2.configure(text='Quel est la longeur du local?',fg='blue')
etiquette2.pack()
saisir2=StringVar()#prévoir la variable pour recevoir le texte saisi
saisir2.set("")
saisie2=Entry(fenetre2,textvariable=saisir2,justify=CENTER)# creation d'une zone de saisie
saisie2.configure(fg='red',bd=5)
saisie2.pack() #integration du widget dans la fenetre
bouton=Button(fenetre2)# creation d'un bouton
bouton.configure(text='Quitter',bg='white',command=fenetre2.destroy,underline=0)#underline = soulignage lettre
bouton.pack()
def nom_du_local_fen2_saisir():
xnom=(saisir.get())
return (eval(xnom))
def largeur_du_local_fen2_saisir1():
xlarg=(saisie.get())
return (eval(xlarg))
def longeur_du_local_fen2_saisir2():
xlong=(saisie.get())
return (eval(xlong))
fenetre=Tk()# creation d'une fenetre
fenetre.title('Programme réalisé par Damien PUAUD')
fenetre.geometry("400x200+400+200")
etiquette=Label(fenetre)# creation d'une etiquette
etiquette.configure(text='Quel est la hauteur des locaux?',fg='blue')
etiquette.pack()
saisir=StringVar()#prévoir la variable pour recevoir le texte saisi
saisir.set("2.5")
saisie=Entry(fenetre,textvariable=saisir,justify=CENTER)# creation d'une zone de saisie
saisie.configure(fg='red',bd=5)
saisie.pack() #integration du widget dans la fenetre
def saisi():
xhaut=(saisir.get())
return (eval(xhaut))
etiquette1=Label(fenetre)# creation d'une etiquette
etiquette1.configure(text='Quel est le coefficient a utiliser?',fg='blue')
etiquette1.pack()
saisir1=StringVar()
saisir1.set("30")
saisie1=Entry(fenetre,textvariable=saisir1,justify=CENTER)# creation d'une zone de saisie
saisie1.configure(fg='red',bd=5)
saisie1.pack() #integration du widget dans la fenetre
def saisi1():
xcoef=saisir1.get()
return (eval(xcoef))
choix=IntVar()# creation d'une variable Tkinter
choix.set(1) # initialisation de la variable choix
case1=Radiobutton(fenetre)# creation de cases a cocher
case1.configure(text='Entree la surface',variable=choix,value="1",command=fen1)
case2=Radiobutton(fenetre)
case2.configure(text='Définir surface',variable=choix,value="2",command=fen2)
case3=Radiobutton(fenetre)
case3.configure(text='Quitter',variable=choix,value="3",command=fenetre.destroy)
case1.pack()
case2.pack()
case3.pack()
bouton=Button(fenetre)# creation d'un bouton
bouton.configure(text='Quitter',bg='white',command=fenetre.destroy,underline=0)#underline = soulignage lettre
bouton.pack()
fenetre.mainloop()# attente des evenements
oquitter=""
while oquitter !="o":#Bouclage du programme
xdef=choix.get() #choix des cases radio boutton
if xdef==1:
xnom=nom_du_local_fen1_saisir()
xsurf=int(nom_du_local_fen1_saisir)
xvol=xsurf*saisi()#Calcul du volume de la pièce
xpuis=saisi1()*xvol#Calcul de la puissance
print "La puissance du local est de ",xpuis,"watts"
xfichier= open("Puissances des locaux.txt", "a")#Création du fichier texte et écriture
print >> xfichier,'\n' "Local:",xnom,"" '\n' "Puissance :", xpuis,"watts "#Ecriture du texte
elif xdef==2:
xnom=raw_input("Quel est le nom du local? ")
xlarg=int((input("Quel est la largeur: ")))
xlong=int((input("Quel est la longueur: ")))
xvol=xlarg*xlong*xhaut
xpuis=xvol*xcoef
print "La puissance du local est de ",xpuis,"watts"
xfichier= open("Puissances des locaux.txt", "a")#Création du fichier texte et écriture
print >> xfichier,'\n' "Local:",xnom,"" '\n' "Puissance :", xpuis,"watts "#Ecriture du texte
elif xdef==3:
oquitter=raw_input("Et tu sur de vouloir quitter o/n ? ") #Fin du bouclage
if oquitter=="o":
Print("Le fichier texte est creer")
else:
Print("Veuillez selectionner une autre réponse ")
xfichier.close() #Fermeture du fichier texte
os.system("pause")
def fen1(): fenetre1=Tk()# creation d'une fenetre
def fen2(): fenetre2=Tk()# creation d'une fenetre fenetre2.title('Définition de la surface')
fenetre=Tk()# creation d'une fenetre fenetre.title('Programme réalisé par Damien PUAUD')
fenetre.mainloop()# attente des evenements
# -*- coding: ISO-8859-15 -*- from Tkinter import* def bouton1(): frame1.pack_forget() #Masque frame1 ainsi que tous les objets contenus dans frame1 frame2.pack() #Affiche frame2 ainsi que tous les objets contenus dans frame2 fenetre1.title('Définition de la surface') def bouton2(): frame2.pack_forget() frame1.pack() fenetre1.title('Surface') #Création de la fenetre-racine de l'application fenetre1=Tk() fenetre1.title('Surface') fenetre1.geometry("400x200+400+200") #Création d'un cadre conteneur (1) frame1 = Frame(fenetre1) frame1.pack() #Widgets inclus dans frame1 etiquette=Label(frame1)# creation d'une etiquette etiquette.configure(text='FRAME1-Quel est le nom du local?',fg='blue') etiquette.pack() bouton1=Button(frame1,text='Bouton 1',bg='white',command=bouton1) bouton1.pack() #Création d'un cadre conteneur (2) frame2 = Frame(fenetre1) #Widgets inclus dans frame2 etiquette=Label(frame2)# creation d'une etiquette etiquette.configure(text='FRAME2-Quel est la largeur du local?',fg='blue') etiquette.pack() bouton2=Button(frame2,text='Bouton 2',bg='white',command=bouton2)# creation d'un bouton bouton2.pack() fenetre1.mainloop()# attente des evenements
fenetre.mainloop()# attente des evenements
from tkMessageBox import showinfo, askyesno
#-*- coding : Latin -1 -*- from Tkinter import* def surface_metres_carres(): "Méthode qui rend le champ de saisie de la surface en mêtres carres valide." entreeLargeur.config(state=DISABLED) entreeLongueur.config(state=DISABLED) entreeMetresCarres.config(state=NORMAL) def surface_Lxl(): "Méthode qui rend le champ de saisie de la surface en longueur par largeur valide." entreeLargeur.config(state=NORMAL) entreeLongueur.config(state=NORMAL) entreeMetresCarres.config(state=DISABLED) def calculer_puissance(): "Méthode qui calcule la puissance du local et qui la sauvegarde." # on s'assure que le nom du local n'est un ensemble d'espaces ou un champ vide ('') nomValide = False for c in entreeNomLocal.get(): if c != ' ': nomValide = True if not nomValide or entreeNomLocal.get() == '': entreeNomLocal.delete(0,END) entreeNomLocal.insert(0,'sans nom') # si la surface a été entrée en m² if choixSurface.get() == 0: # si les entrees ne sont pas convertibles en décimal (présence d'une letrre par ex) on part de la méthode try: float(entreeMetresCarres.get()) float(entreeHauteur.get()) float(entreeCoefficient.get()) except: return puissance = float(entreeMetresCarres.get())*float(entreeHauteur.get())*float(entreeCoefficient.get()) l = [entreeNomLocal.get(),entreeMetresCarres.get(),entreeHauteur.get(),entreeCoefficient.get()] # si la surface a été entrée sous la forme Lxl elif choixSurface.get() == 1: try: float(entreeLargeur.get()) float(entreeLongueur.get()) float(entreeHauteur.get()) float(entreeCoefficient.get()) except: return puissance = float(entreeLargeur.get())*float(entreeLongueur.get())*float(entreeHauteur.get())*float(entreeCoefficient.get()) # on rajoute un 'x' antre la largeur et la longueur pour la définition de la surface l = [entreeNomLocal.get(),entreeLargeur.get()+'x'+entreeLongueur.get(),entreeHauteur.get(),entreeCoefficient.get()] labelPuissance.config(text='Puissance : '+str(round(puissance,2))+' W') # si le local existait déja on le met à jour sinon on l'ajoute à la liste des locaux surfaceDejaPresente = False for liste in listeLocaux: if entreeNomLocal.get() == liste[0]: surfaceDejaPresente = True break if not surfaceDejaPresente: listeLocaux.append(l) else: listeLocaux[listeLocaux.index(liste)] = l # on met à jour la listebox listeBox.delete(0,END) for liste in listeLocaux: listeBox.insert(END,liste[0]) # on sauvegarde la liste des locaux fichier = open('puissanceLocal.txt','w') fichier.write(str(listeLocaux)) fichier.close() def clic(event): "Méthode qui remplie les champs de l'interface en fonction du local choisi dans la listebox." i = listeBox.curselection() if i: # rappel : listeLocaux contient tous les locaux sous la forme [nom,surface,hauteur,coeff] où surface peut être directement en m² ou en Lxl for liste in listeLocaux: if liste[0] == listeBox.get(i): entreeNomLocal.delete(0,END) entreeNomLocal.insert(0,liste[0]) if 'x' in liste[1]: choixSurface.set(1) surface_Lxl() Lxl = liste[1].split('x') # si la surface est de la forme Lxl on remplie une mini-liste de la Largeur et la longueur en la splitant à l'endroit où le 'x' se trouve entreeLargeur.delete(0,END) entreeLargeur.insert(0,Lxl[0]) entreeLongueur.delete(0,END) entreeLongueur.insert(0,Lxl[1]) else: choixSurface.set(0) surface_metres_carres() entreeMetresCarres.delete(0,END) entreeMetresCarres.insert(0,liste[1]) entreeHauteur.delete(0,END) entreeHauteur.insert(0,liste[2]) entreeCoefficient.delete(0,END) entreeCoefficient.insert(0,liste[3]) calculer_puissance() listeBox.select_set(i) def supprimer_local(event): """Méthode qui supprime un local de la liste de locaux.""" i = listeBox.curselection() if i: for liste in listeLocaux: if liste[0] == listeBox.get(i): del listeLocauxs[listeLocaux.index(liste)] listeBox.delete(0,END) for liste in listeLocaux: listeBox.insert(END,liste[0]) if __name__ == '__main__': #--- Fenêtre principale -------------------- fenetre=Tk() fenetre.title("Calcul de puissance d'un local") fenetre.resizable(0,0) fenetre.geometry("+400+200") #-- Frame de l'interface ------------------- frameInterface = Frame(fenetre) # label et entree nom labelNom = Label(frameInterface,text='Nom du local : ') labelNom.grid(row=0,column=0) nomLocal = StringVar() nomLocal.set('sans nom') entreeNomLocal = Entry(frameInterface,textvariable=nomLocal) entreeNomLocal.grid(row=0,column=1) # label surface labelTitreSurface = Label(frameInterface,text='Surface') labelTitreSurface.grid(row=1,column=0,sticky=W) # variable tkinter déterminant le bouton radio sélectionné choixSurface = IntVar() choixSurface.set(0) # bouton radio surface en mêtres carrés radioBoutonMcarres = Radiobutton(frameInterface,text='m² :',variable=choixSurface,value=0,command=surface_metres_carres) radioBoutonMcarres.grid(row=2,column=0,sticky=W) # entree mêtres carrés entreeMetresCarres = Entry(frameInterface) entreeMetresCarres.insert(0,'0') entreeMetresCarres.grid(row=2,column=1) # bouton radio surface Largeur x longueur radioBoutonLxl = Radiobutton(frameInterface,text='L(m) x l(m)',variable=choixSurface,value=1,command=surface_Lxl) radioBoutonLxl.grid(row=3,column=0,sticky=W) # label et entree Largeur Label(frameInterface,text='Largeur : ').grid(row=4,column=0,sticky=E) entreeLargeur = Entry(frameInterface) entreeLargeur.insert(0,'0') entreeLargeur.config(state=DISABLED) entreeLargeur.grid(row=4,column=1) # label et entree longueur Label(frameInterface,text='longueur : ').grid(row=5,column=0,sticky=E) entreeLongueur = Entry(frameInterface) entreeLongueur.insert(0,'0') entreeLongueur.config(state=DISABLED) entreeLongueur.grid(row=5,column=1) # label et entree Hauteur labelHauteur = Label(frameInterface,text='Hauteur(m) : ') labelHauteur.grid(row=6,column=0,sticky=W) entreeHauteur = Entry(frameInterface) entreeHauteur.insert(0,'0') entreeHauteur.grid(row=6,column=1) # label et entree coeeficient labelCoefficient = Label(frameInterface,text='Coefficient : ') labelCoefficient.grid(row=7,column=0,sticky=W) entreeCoefficient = Entry(frameInterface) entreeCoefficient.insert(0,'0') entreeCoefficient.grid(row=7,column=1) # bouton calculer puissance b = Button(frameInterface,text='Calculer puissance',command=calculer_puissance) b.grid(row=8,column=0,columnspan=2) labelPuissance=Label(frameInterface,text='Puissance : ') labelPuissance.grid(row=9,column=0,sticky=W,columnspan=2) #-- Frame liste ---------------------------- frameListe = Frame(fenetre) # liste box et sa scrollbar listeBox = Listbox(frameListe,height=14) scrollBar = Scrollbar(frameListe) scrollBar.config(command=listeBox.yview) listeBox.config(yscrollcommand=scrollBar.set) listeBox.pack(side=LEFT,fill=Y) listeBox.bind('<ButtonRelease-1>',clic) listeBox.bind('<Delete>',supprimer_local) scrollBar.pack(side=LEFT,fill=Y) #-- Placement des frames ------------------- frameInterface.pack(side=LEFT) frameListe.pack(side=LEFT,fill=Y) #--- Chargement du fichier existant -------- listeLocaux = [] # liste contenant tous les locaux sous la forme [nom,surface,hauteur,coeff] où surface peut être directement en m² ou en Lxl try: fichier = open('puissanceLocal.txt','r') listeLocaux = eval(fichier.read()) fichier.close() for liste in listeLocaux: listeBox.insert(END,liste[0]) except: pass #--- Lancement de la boucle principale ----- fenetre.mainloop()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question