Partage
  • Partager sur Facebook
  • Partager sur Twitter

actualiser mon compteur Tkinter

je cherche comment actualiser mon compteur quand fonction est appelé

    12 mai 2021 à 17:43:42

    Bonjour, je cherche à résoudre un problème d'actualisation de compteur 

    En effet je veux que quand le Button "Valider" est pressé, celui ci actualise mon compteur.

    Je vous met mon script ci-dessous :

    from tkinter import *
    from PIL import ImageTk, Image
    
    #créer une premiere fenetre
    window=Tk()
    
    #personnaliser cette fenetre
    window.title("Projet NSI") #titre de la fenêtre
    window.wm_state(newstate="zoomed") #pleins écran
    window.resizable(0,0)#dimension minimum de la fenêtre
    window.iconbitmap("logo.ico") #changer le logo
    window.config(background='#088A68') # changer la couleur du fond
    
    
    color='#01DFA5'
    
    #============================= FONCTIONS =======================================
    def bouton_valider_presser():
        if bouton3.select:
            bonne_reponse+=1
        elif bouton1.select or bouton2.select or bouton4.select:
            mauvaise_reponse+=1
    
    def bouton1_selectionner():
        bouton2.deselect()
        bouton3.deselect()
        bouton4.deselect()
    
    def bouton2_selectionner():
        bouton1.deselect()
        bouton3.deselect()
        bouton4.deselect()
    
    def bouton3_selectionner():
        bouton1.deselect()
        bouton2.deselect()
        bouton4.deselect()
    
    def bouton4_selectionner():
        bouton1.deselect()
        bouton2.deselect()
        bouton3.deselect()
    
    
    
    
    
    def changer_frame(frame,frame_suivante):
        frame.pack_forget()
        frame_suivante.pack(expand=YES,fill=BOTH,padx=25,pady=25)
    
    def valider():
        bouton_valider.grid(row=6, column=12)
    
    def valider_bonne_reponse():
        bonne_reponse_str.forget()
        bonne_reponse_str.grid(row=1,column=2)
    
    
    
    #============================= TOUTES LES FRAMES ===============================
    
    frame1=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame2=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame3=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame4=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame5=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame6=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame7=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame8=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame9=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame10=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame11=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    frame12=Frame(window,bg=color, border=1, relief= SUNKEN,padx=10,pady=10)
    
    #=============================FRAME 1 : MENU DE DEPART==========================
    
    frame1.pack(expand=YES, fill=BOTH, padx=25,pady=25)
    
    
    #Texte "QUIZZ DE NSI"
    Titre= Label(frame1,text="QUIZZ DE NSI",
        font=("Jokerman",45),
        bg=color,#background
        fg="black") #fontground
    Titre.grid( row=0,column= 5) #position
    
    
    #Consigne
    Consigne= Label(frame1,text="- 20 questions vous seront posés",
        font=("SimSun",25),
        bg= color,#background
        fg="black") #fontground
    Consigne.place(x=490, y=200)
    
    Consigne_1=Label(frame1,text="- Vous-y répondrez sous une forme de QCM",
        font=("SimSun",25),
        bg=color,#background
        fg="black") #fontground
    Consigne_1.place(x=420, y=250) #fenêtre au centre de la fenetre
    
    
    Consigne_2=Label(frame1,text="- Une seule réponse par question est possible",
        font=("SimSun",25),
        bg=color,#background
        fg="black") #fontground
    Consigne_2.place(x=380, y=300) #fenêtre au centre de la fenetre
    
    #image du logo dans la frame
    mon_logo= ImageTk.PhotoImage(Image.open("logo.png"))
    mon_label= Label(frame1,image=mon_logo)
    mon_label.place(x=1335, y=600)
    
    
    #Bouton "Commencer"
    bouton_commencer= Button(frame1,text=('COMMENCER'), font=('Rockwell',40),command=lambda:[changer_frame(frame1,frame2)])
    bouton_commencer.place(x=525, y=450)
    
    #=============================FRAME 2 : QUESTION 1 =============================
    
    frame2_1=Frame(frame2,bg='blue', border=1, relief= SUNKEN,padx=25,pady=25)
    frame2_1.place(relx=.5, rely=.5, anchor="center") #permet de placer la frame au centre
    
    
    
    
    
    question_pose_2= Label(frame2_1, text="Question ?", bg=color, font=('Caladea', 15, 'italic'))
    question_pose_2.grid(row=1,column=10)
    
    #============================= CHECKBUTTON
    #BOUTON 1 A COCHER
    bouton1= Checkbutton(frame2_1, text="MAUVAISE REPONSE",bg=color, font=('Caladea', 12, 'italic'),command= lambda:[valider(), bouton1_selectionner()])
    bouton1.grid(row=2, column=12)
    
    #BOUTON 2 A COCHER
    bouton2= Checkbutton(frame2_1, text="MAUVAISE REPONSE",bg=color, font=('Caladea', 12, 'italic'),command= lambda:[valider(), bouton2_selectionner()])
    bouton2.grid(row=3, column=12)
    
    #BOUTON 3 A COCHER
    bouton3= Checkbutton(frame2_1, text="BONNE REPONSE",bg=color, font=('Caladea', 12, 'italic'),command= lambda:[valider(),bouton3_selectionner()] )
    bouton3.grid(row=4, column=12)
    
    #BOUTON 4 A COCHER
    bouton4= Checkbutton(frame2_1, text="MAUVAISE REPONSE",bg=color, font=('Caladea', 12, 'italic'),command= lambda:[valider(), bouton4_selectionner()] )
    bouton4.grid(row=5, column=12)
    
    bouton_valider=Button(frame2_1, text="Valider", bg='red', font=('Caladea',20,'bold'),command=lambda:[bouton_valider_presser,valider_bonne_reponse]) #changer_frame(frame2,frame1)
    question2=Label(frame2,text="Question 2 :", bg=color,font=('Caladea',20,'bold','underline'))
    question2.grid(row=0,column=0, padx=10,pady=10)
    #============================= COMPTEUR DE REPONSE =============================
    frame2_compteur_reponse= Frame(frame2,padx=20,pady=20, bg='red')
    frame2_compteur_reponse.place(x=1000,y=0)
    #============================ LISTES
    
    compteur_str_bonne_reponse= Label(frame2_compteur_reponse,text=('Bonne Reponse ='),font=('Caladea',10,'italic'))
    compteur_str_mauvaise_réponse= Label(frame2_compteur_reponse, text=('Mauvaise Reponse='),font=('Caladea',10,'italic'))
    compteur_str_bonne_reponse.grid(row=1,column=1)
    compteur_str_mauvaise_réponse.grid(row=2,column=1)
    
    
    bonne_reponse=0
    bonne_reponse_str=Label(frame2_compteur_reponse, text=bonne_reponse)
    bonne_reponse_str.grid(row=1,column=2)
    
    mauvaise_reponse=0
    mauvaise_reponse_str=Label(frame2_compteur_reponse, text=bonne_reponse)
    mauvaise_reponse_str.grid(row=2,column=2)
    
    window.mainloop()
    

    Merci beaucoup :)

    (Ps: Ne faites pas attention à l'esthétique ce n'est que temporaire)

    • Partager sur Facebook
    • Partager sur Twitter
      12 mai 2021 à 18:13:21

      bonne_reponse_str.config(text=bonne_reponse)

      http://tkinter.fdex.eu/doc/uwm.html#config 

      PS: une coquille ligne 167, tu indiques la valeur de bonne_reponse dans ton label mauvaise_reponse_str (là c'est pas grave, c'est la même valeur)

      Une autre solution c'est d'utiliser les variables de contrôles http://tkinter.fdex.eu/doc/ctrvar.html#ctrlvariables 

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        13 mai 2021 à 10:03:17

        MatysLepretre a écrit:

        (Ps: Ne faites pas attention à l'esthétique ce n'est que temporaire)

        Mouais,:ninja: c'est du temporaire définitif... :lol:

        • Partager sur Facebook
        • Partager sur Twitter

        actualiser mon compteur Tkinter

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown