Aide exécution programme

Résolu/Fermé
Skyrigel Messages postés 9 Date d'inscription lundi 22 avril 2019 Statut Membre Dernière intervention 1 mai 2019 - Modifié le 22 avril 2019 à 15:11
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Derniè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()

1 réponse

quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
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.
1
Skyrigel Messages postés 9 Date d'inscription lundi 22 avril 2019 Statut Membre Derniè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...
0
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344 > Skyrigel Messages postés 9 Date d'inscription lundi 22 avril 2019 Statut Membre Derniè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.
0
Skyrigel Messages postés 9 Date d'inscription lundi 22 avril 2019 Statut Membre Dernière intervention 1 mai 2019
30 avril 2019 à 22:00
Merci énormément, je vais essayer comme ça.
0
Skyrigel Messages postés 9 Date d'inscription lundi 22 avril 2019 Statut Membre Derniè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
0
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344 > Skyrigel Messages postés 9 Date d'inscription lundi 22 avril 2019 Statut Membre Derniè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 :
def bilan(liste):
.
0