Aide exécution programme

Résolu
Skyrigel Messages postés 9 Statut Membre -  
quent217 Messages postés 424 Statut Membre -
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()

1 réponse

quent217 Messages postés 424 Statut Membre 347
 
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.
1
Skyrigel Messages postés 9 Statut Membre
 
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...
0
quent217 Messages postés 424 Statut Membre 347 > Skyrigel Messages postés 9 Statut Membre
 
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.
0
Skyrigel Messages postés 9 Statut Membre
 
Merci énormément, je vais essayer comme ça.
0
Skyrigel Messages postés 9 Statut Membre
 
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
0
quent217 Messages postés 424 Statut Membre 347 > Skyrigel Messages postés 9 Statut Membre
 
En faisant
command=lambda:bilan(liste)
vous donnez la liste en paramètre à la fonction bilan donc il faut lui ajouter ce paramètre :
def bilan(liste):
.
0