Problème avec programmation CheckButton

Résolu
cvan85 Messages postés 59 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,


Je souhaite afficher 5 "cases à cocher" et un bouton de validation, puis a tester que 2 des 5 checkbutton (pas moins et pas plus) ont été cochés.
A l'exécution du programme lorsque je coche 1 case (ou la décoche) toutes les 5 cases se cochent également.
Voir l'extrait de code joint que je veux mettre en place.

Merci de votre aide.
Claude

Configuration: Macintosh / Firefox 78.0

2 réponses

  1. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     
    Bonjour cvan85,

    Essaie comme ça pour voir:

    r_v_c1 = BooleanVar(value=False)
    r_v_c2 = BooleanVar(value=False)
    r_v_c3 = BooleanVar(value=False)
    etc ..


    au lieu de :
     r_v_c1=r_v_c2=r_v_c3=r_v_c4=r_v_c5=BooleanVar(value=False)


    Sinon, dans ta fonction, tu peux ecrire:

    if (r_v_c1.get()) :


    au lieu de :

    if (r_v_c1.get()) == True:
    1
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      .
      0
    2. cvan85 Messages postés 59 Statut Membre 1
       
      Bonsoir et Merci infiniment à Phil_1857 et yg_be,.
      Je galérai depuis un moment la dessus.
      En effet l'affectation multiple est autorisée avec des variables "classiques" mais pas avec ce type de variables qui gèrent les widgets .
      Claude
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > cvan85 Messages postés 59 Statut Membre
         
        le problème c'est que tu ne créais qu'une seule variable.
        peux-tu alors marquer la discussion comme résolue?
        0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    peux-tu partager du texte, plutôt qu'une image?
    et en utilisant les balises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
    0
    1. cvan85 Messages postés 59 Statut Membre 1
       
      Re-bonjour,

      Désolé pour l'image à la place du texte.
      Voilà le code.

      Merci de votre aide.
      Claude

      #!/usr/bin/env python3.9
      
      from tkinter import *
      import random 
      
      def second_tirage():
          nb_case = 0
          Label(can_gen, text= "Sec_tirage ok" ,bg='#FEFEE2',fg='black').place(x=100, y= 160)
          if (r_v_c1.get()) == True:
              nb_case=nb_case + 1
              r_v_c1.set(False)
          if (r_v_c2.get()) == True:
              nb_case=nb_case + 1
              r_v_c2.set(False)
          if (r_v_c3.get()) == True:
              nb_case=nb_case + 1
              r_v_c3.set(False)
          if (r_v_c4.get()) == True:
              nb_case=nb_case + 1
              r_v_c4.set(False)
          if (r_v_c5.get()) == True:
              nb_case=nb_case + 1
              r_v_c5.set(False)
          if nb_case != 2:
              Label(can_gen, text= str(nb_case) + " case(s) saisie(s) :)" ,bg='#FEFEE2',fg='black').place(x=100, y= 180)    
          
      ####### Programme principal   
      # Variables globales    
      choix = ['blue','green','red','yellow','purple']
      
      fen1=Tk()
      
      fen1.title("Pour test checkbutton")
      fen1.geometry("350x470")
      can_gen=Canvas(fen1, width=290, height=410, bg ="#FEFEE2")
      can_gen.place(x=30,y=30)
      
      # en test###########
      r_v_c1=r_v_c2=r_v_c3=r_v_c4=r_v_c5=BooleanVar(value=False)
      c1 = Checkbutton(can_gen, text = "1", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c1).place(x=45,y=60)
      c2 = Checkbutton(can_gen, text = "2", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c2).place(x=95,y=60)
      c3 = Checkbutton(can_gen, text = "3", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c3).place(x=145,y=60)
      c4 = Checkbutton(can_gen, text = "4", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c4).place(x=195,y=60)
      c5 = Checkbutton(can_gen, text = "5", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c5).place(x=245,y=60)
      valid = Button(can_gen, text = "Validez", height = 2, width = 8,bg ="#FEFEE2",fg='red',command = second_tirage).place(x=100,y=100)
      
      ####################
      
      
      0