Skyrigel
Messages postés9Date d'inscriptionlundi 22 avril 2019StatutMembreDernière intervention 1 mai 2019
-
Modifié le 22 avril 2019 à 15:11
quent217
Messages postés421Date d'inscriptionvendredi 25 septembre 2015StatutMembreDernière intervention 1 mars 2024
-
1 mai 2019 à 23:38
Bonjour, je réalise un petit sondage de santé qui, suite à l'obtention de la tranche d'âge, du sexe et du niveau d'activité, ouvre une des 24 images possibles correspondant à l'apport énergétique et au temps de sommeil nécessaire pour la personne qui y répond.
Cependant j'ai relié le programme dans une fenêtre TopLevel pour faire une petite page d'accueil, et lorsqu'on valide nos réponses, rien ne se passe.
Sauriez-vous pourquoi ?
Merci
from tkinter import *
from PIL import ImageFilter
from PIL import Image as PIL
def bilan():
var1 = IntVar()
var2 = IntVar()
var3 = IntVar()
var4 = IntVar()
var5 = IntVar()
var6 = IntVar()
var7 = IntVar()
var8 = IntVar()
var9 = IntVar()
var10= IntVar()
masc = var1.get()
fem = var2.get()
age1 = var3.get()
age2 = var4.get()
age3 = var5.get()
sed = var6.get()
peuac = var7.get()
act = var8.get()
tact = var9.get()
if masc == 1:
homme = 1
femme = 0
elif masc == 0:
homme = 0
if fem == 1:
homme = 0
femme = 1
elif fem == 0:
femme = 0
if age1 == 1:
19<=age<=30
age2 = 0
age3 = 0
if age2 == 1:
31<=age<=50
age1 = 0
age3 = 0
if age3 ==1:
51<=age
age1 = 0
age2 = 0
if sed==1:
peuac == 0
act == 0
tact == 0
if peuac==1:
sed == 0
act == 0
tact == 0
if act==1:
sed==0
peuac==0
tact==0
if tact==1:
sed==0
peuac==0
act==0
if masc == 1 and age1 == 1 and sed == 1:
image1 = PIL.open('P:\Mes documents\Projet ISN\Image1.jpg')
image1.show()
if masc == 1 and age1 == 1 and peuac == 1:
image2 = PIL.open('P:\Mes documents\Projet ISN\Image2.jpg')
image2.show()
if masc == 1 and age1 == 1 and act == 1:
image3 = PIL.open('P:\Mes documents\Projet ISN\Image3.jpg')
image3.show()
if masc == 1 and age1 == 1 and tact == 1:
image4 = PIL.open('P:\Mes documents\Projet ISN\Image4.jpg')
image4.show()
if masc == 1 and age2 == 1 and sed == 1:
image5 = PIL.open('P:\Mes documents\Projet ISN\Image5.jpg')
image5.show()
if masc == 1 and age2 == 1 and peuac == 1:
image6 = PIL.open('P:\Mes documents\Projet ISN\Image6.jpg')
image6.show()
if masc == 1 and age2 == 1 and act == 1:
image7 = PIL.open('P:\Mes documents\Projet ISN\Image7.jpg')
image7.show()
if masc == 1 and age2 == 1 and tact == 1:
image8 = PIL.open('P:\Mes documents\Projet ISN\Image8.jpg')
image8.show()
if masc == 1 and age3 == 1 and sed == 1:
image9 = PIL.open('P:\Mes documents\Projet ISN\Image9.jpg')
image9.show()
if masc == 1 and age3 == 1 and peuac == 1:
image10 = PIL.open('P:\Mes documents\Projet ISN\Image10.jpg')
image10.show()
if masc == 1 and age3 == 1 and act == 1:
image11 = PIL.open('P:\Mes documents\Projet ISN\Image11.jpg')
image11.show()
if masc == 1 and age3 == 1 and tact == 1:
image12 = PIL.open('P:\Mes documents\Projet ISN\Image12.jpg')
image12.show()
if fem == 1 and age1 == 1 and sed == 1:
image13 = PIL.open('P:\Mes documents\Projet ISN\Image13.jpg')
image13.show()
if fem == 1 and age1 == 1 and peuac == 1:
image14 = PIL.open('P:\Mes documents\Projet ISN\Image14.jpg')
image14.show()
if fem == 1 and age1 == 1 and act == 1:
image15 = PIL.open('P:\Mes documents\Projet ISN\Image15.jpg')
image15.show()
if fem == 1 and age1 == 1 and tact == 1:
image16 = PIL.open('P:\Mes documents\Projet ISN\Image16.jpg')
image16.show()
if fem == 1 and age2 == 1 and sed == 1:
image17 = PIL.open('P:\Mes documents\Projet ISN\Image17.jpg')
image17.show()
if fem == 1 and age2 == 1 and peuac == 1:
image18 = PIL.open('P:\Mes documents\Projet ISN\Image18.jpg')
image18.show()
if fem == 1 and age2 == 1 and act == 1:
image19 = PIL.open('P:\Mes documents\Projet ISN\Image19.jpg')
image19.show()
if fem == 1 and age2 == 1 and tact == 1:
image20 = PIL.open('P:\Mes documents\Projet ISN\Image20.jpg')
image20.show()
if fem == 1 and age3 == 1 and sed == 1:
image21 = PIL.open('P:\Mes documents\Projet ISN\Image21.jpg')
image21.show()
if fem == 1 and age3 == 1 and peuac == 1:
image22 = PIL.open('P:\Mes documents\Projet ISN\Image22.jpg')
image22.show()
if fem == 1 and age3 == 1 and act == 1:
image23 = PIL.open('P:\Mes documents\Projet ISN\Image23.jpg')
image23.show()
if fem == 1 and age3 == 1 and tact == 1:
image24 = PIL.open('P:\Mes documents\Projet ISN\Image24.jpg')
image24.show()
def MenuTest():
fen1 = Toplevel(fen2)
fen1.title("Ma Santé")
can1 = Canvas(fen1,width=634, height=371)
photo = PhotoImage(file="projet.png")
can1.create_image(0, 0, anchor=NW, image=photo)
can1.pack()
var1 = IntVar()
var2 = IntVar()
var3 = IntVar()
var4 = IntVar()
var5 = IntVar()
var6 = IntVar()
var7 = IntVar()
var8 = IntVar()
var9 = IntVar()
var10= IntVar()
label = Label(fen1, text="Question 1 : Etes-vous un homme ou une femme ?", bg="ivory").pack()
check_btn1 = Checkbutton(fen1, text="Homme",variable=var1).pack()
check_btn2 = Checkbutton(fen1, text="Femme",variable=var2).pack()
label = Label(fen1, text="Question 2 : Quel âge avez-vous ?", bg="ivory")
label.pack()
check_btn3 = Checkbutton(fen1, text="19-30ans",variable=var3).pack()
check_btn4 = Checkbutton(fen1, text="31-50ans",variable=var4).pack()
check_btn5 = Checkbutton(fen1, text="51-70ans",variable=var5).pack()
label = Label(fen1, text="Question 3 : Etes-vous plutôt...", bg="ivory")
label.pack()
check_btn6 = Checkbutton(fen1, text="Sédentaire",variable=var6).pack()
check_btn7 = Checkbutton(fen1, text="Peu actif(ve)",variable=var7).pack()
check_btn8 = Checkbutton(fen1, text = "Actif(ve)", variable=var8).pack()
check_btn9 = Checkbutton(fen1, text = "Très actif(ve)", variable=var9).pack()
button_valide= Button(fen1, text="Valider",relief=RAISED, command=bilan).pack(side=BOTTOM)
label2 = Label(fen1, text="Sédentaire = activités de la vie quotidienne, incluant jusqu’à 30 minutes de marche lente", bg="grey").pack()
label3 = Label(fen1, text="Peu actif = 30 à 60 minutes d’activités d’intensité modérée, comme la marche rapide", bg="grey").pack()
label4 = Label(fen1, text="Actif = plus au moins 60 minutes d’activités d’intensité modérée, comme la marche rapide", bg="grey").pack()
label5 = Label(fen1, text="Très actif = plus au moins 60 minutes d’activités d’intensité modérée avec en plus 60 minutes d’activités d’intensité vigoureuse", bg="grey").pack()
fen1.mainloop()
fen2 = Tk()
fen2.title("Test de Santé")
boutonaccueil=Button(fen2, text="Commencer le Test", command=MenuTest).pack()
can2 = Canvas(fen2,width=570, height=380)
photo = PhotoImage(file="ecranaccueil.gif")
can2.create_image(0, 0, anchor=NW, image=photo)
can2.pack()
fen2.mainloop()
quent217
Messages postés421Date d'inscriptionvendredi 25 septembre 2015StatutMembreDernière intervention 1 mars 2024344 23 avril 2019 à 17:45
Bonjour,
au début de votre fonction bilan, vous redéfinissez les valeurs de var1, var2, etc. avec des nouveaux IntVar. Toutes les variables ont donc la valeur par défaut c'est à dire 0.
Il faut plutôt récupérer les variables var1, var2, etc. définis dans MenuTest. Vous pouvez par exemple les mettre dans une liste ou un dictionnaire qui sera passé en paramètre à la fonction bilan.
Skyrigel
Messages postés9Date d'inscriptionlundi 22 avril 2019StatutMembreDernière intervention 1 mai 2019 Modifié le 30 avril 2019 à 12:54
Merci beaucoup, je vais essayer comme cela.
Cependant dois-je créer ma liste dans une des fonctions ou en dehors de celle-ci ?
Et si je le fais en dehors comment puis-je récupérer la valeur des variables dans la liste, je me débrouille peu en listes...
quent217
Messages postés421Date d'inscriptionvendredi 25 septembre 2015StatutMembreDernière intervention 1 mars 2024344
>
Skyrigel
Messages postés9Date d'inscriptionlundi 22 avril 2019StatutMembreDernière intervention 1 mai 2019 30 avril 2019 à 17:17
Vous pouvez créer la liste dans la fonction MenuTest et la passée en paramètre à la fonction bilan en remplacant
command=bilan
par
command=lambda:bilan(liste)
.
Ou alors vous pouvez créer la liste en dehors des fonctions et la déclarer en tant que variable globale.
Skyrigel
Messages postés9Date d'inscriptionlundi 22 avril 2019StatutMembreDernière intervention 1 mai 2019 30 avril 2019 à 22:00
Merci énormément, je vais essayer comme ça.
Skyrigel
Messages postés9Date d'inscriptionlundi 22 avril 2019StatutMembreDernière intervention 1 mai 2019 1 mai 2019 à 13:24
Bonjour, j'ai essayé en définissant une liste de la sorte :
liste =[var1,var2,var3,var4,var5,var6,var7,var8,var9]
Cependant après avoir remplacé command=bilan par command=lambda:bilan(liste) j'ai ce message : TypeError: bilan() takes 0 positional arguments but 1 was given
Sauriez vous où ai-je fait une erreur ? Merci d'avance
quent217
Messages postés421Date d'inscriptionvendredi 25 septembre 2015StatutMembreDernière intervention 1 mars 2024344
>
Skyrigel
Messages postés9Date d'inscriptionlundi 22 avril 2019StatutMembreDernière intervention 1 mai 2019 1 mai 2019 à 14:13
En faisant
command=lambda:bilan(liste)
vous donnez la liste en paramètre à la fonction bilan donc il faut lui ajouter ce paramètre :
Modifié le 30 avril 2019 à 12:54
Cependant dois-je créer ma liste dans une des fonctions ou en dehors de celle-ci ?
Et si je le fais en dehors comment puis-je récupérer la valeur des variables dans la liste, je me débrouille peu en listes...
30 avril 2019 à 17:17
Ou alors vous pouvez créer la liste en dehors des fonctions et la déclarer en tant que variable globale.
30 avril 2019 à 22:00
1 mai 2019 à 13:24
liste =[var1,var2,var3,var4,var5,var6,var7,var8,var9]
Cependant après avoir remplacé command=bilan par command=lambda:bilan(liste) j'ai ce message : TypeError: bilan() takes 0 positional arguments but 1 was given
Sauriez vous où ai-je fait une erreur ? Merci d'avance
1 mai 2019 à 14:13