Problème avec programmation CheckButton [Résolu]

Signaler
Messages postés
30
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
28 décembre 2020
-
Messages postés
13943
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
-
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

Messages postés
853
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
17 janvier 2021
96
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:
Messages postés
13943
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
785
.
Messages postés
30
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
28 décembre 2020

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
Messages postés
13943
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
785 >
Messages postés
30
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
28 décembre 2020

le problème c'est que tu ne créais qu'une seule variable.
peux-tu alors marquer la discussion comme résolue?
Messages postés
13943
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 janvier 2021
785
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
Messages postés
30
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
28 décembre 2020

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)

####################