cs_coco02
Messages postés3Date d'inscriptionsamedi 14 février 2009StatutMembreDernière intervention21 février 2009
-
14 févr. 2009 à 11:41
cs_coco02
Messages postés3Date d'inscriptionsamedi 14 février 2009StatutMembreDernière intervention21 février 2009
-
21 févr. 2009 à 09:40
Bonjour,
Je debute en programmation avec python depuis quelques jours.J'essaie de creer un petit programme simple pour controler l'efficacité d'une climatisation automobile.Mon programme debute par une fonction input pour que l'utisateur entre des données et ceci foncionne parfaitement.Mon souci est que je souhaite remplacer ma fonction input par une interface grahique avec Tkinter mais j'ai passé beaucoup d'heures et je n'arrive à rien,allors je me résous à demander de l'aide.Voici le debut de mon code,soyez indulgent car je suis vraiment un novice.Merci pour votre aide.
t1=input('entrer la temperature d_air exterieure')
h1=input('entrer l_hygrometrie')
t2=input('entrer la temperatur d_air souffle')
lespinx
Messages postés106Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention23 novembre 202277 18 févr. 2009 à 21:20
Bonsoir
1) Attention a la portée des variables
def diag():
print "objets TkInter",t1,h1,t2
if t1>15 and t1<20:
if h1>20 and h1<70:
if t2<6:
print "clim correcte"
else:
print"manque d_efficacite"
Dans l'exemple cité, les variables t1, h1 et t2 ne sont pas des variables de la fonction "diag" ce sont les numéros d'objets Tkinter attribués aux champs Entry
Conclusion: "il ne se passe rien..."
Pour des utilisations différentes il faut des variables différentes.
t1=IntVar()
t1=Entry(fen1,textvariable=tempext)
if t1>15
2) IntVar() et textvariable ne sont pas utiles dans ce cas
3) Ci-joint une proposition pour utiliser les champs Entry
#!/usr/bin/python
# -*- coding: ISO-8859-15 -*-
from Tkinter import*
import tkMessageBox
def diag():
#La fonction "diag" sera appellée par appui du bouton "valider":
#c'est ici qu'il faut lire le contenu des champs en entrée avec la méthode
#associée à l'objet ".get()" et qu'il faut effectuer tous les contrôles de
#saisie
#Controle de la saisie
t1_ent = t1.get()
if not control_champ(t1_ent): return
h1_ent = h1.get()
if not control_champ(h1_ent): return
t2_ent = t2.get()
if not control_champ(t2_ent): return
#int fonction pour transformer en "integer" la valeur du champ de saisie qui
#est par défaut en "str", pour permettre la comparaison numérique
if t1_ent > 15 and t1_ent < 20:
if h1_ent>20 and h1_ent<70:
if t2_ent<6:
print "clim correcte"
else:
print"manque d'efficacité"
return
#Si les conditions ne sont pas remplies, il ne se passe rien, il faut le dire
#un message c'est mieux qu'un print.
tkMessageBox.showwarning("Climatisation ", "Saisie hors controle")
def control_champ(champ):
#Champ vide?
if champ == "":
tkMessageBox.showwarning("Climatisation ", "Veuillez entrer les données")
return False
#Champ numérique?
for x in map(ord, champ):
if x < 48 or x > 57: # Valeurs ASCII pour les chiffres
tkMessageBox.showwarning("Climatisation ", "Saisie non numérique")
return False
lespinx
Messages postés106Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention23 novembre 202277 16 févr. 2009 à 11:38
Bonjour,
Il faut commencer par le début et je conseille une saine lecture içi Ce document est libre et peut être téléchargé (370 pages en français).
Pour Tkinter voir le chapitre 8
cs_coco02
Messages postés3Date d'inscriptionsamedi 14 février 2009StatutMembreDernière intervention21 février 2009 18 févr. 2009 à 13:19
Bonjour,
Sur vos precieux conseils,j'ai telechargé le document et je l'ai etudié.Malgré de notables progrés je coince un peu.Mon interface grahique est conforme à ce que je voulais, mais lorsque je clique sur le bouton 'valider' je n'obtiens aucun resulat,il y a surement beaucoup de choses que je ne comprends pas.voici une parteie de mon code simplifié,j'espére que vous pourrez m'orienter un peu.merci d'avance
#!/usr/bin/python
from Tkinter import*
fen1=Tk()
def diag():
if t1>15 and t1<20:
if h1>20 and h1<70:
if t2<6:
print "clim correcte"
else:
print"manque d_efficacite"
cs_coco02
Messages postés3Date d'inscriptionsamedi 14 février 2009StatutMembreDernière intervention21 février 2009 21 févr. 2009 à 09:40
Bonjour,
Je vous remercie pour tous vos conseils,car maintenant tout est devenu trés clair pour moi,j'ai bien comris toutes mes erreurs alors que je ramais depuis un moment.J'ai revu l'ensemble de mon code et tout fonctionne parfaitement.
Encore merci et bon week end.