Problème avec programmation CheckButton

Résolu/Fermé
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 - 8 déc. 2020 à 13:03
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 - 8 déc. 2020 à 20:04
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
A voir également:

2 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 8 déc. 2020 à 18:14
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
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551
Modifié le 8 déc. 2020 à 18:54
.
0
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1
8 déc. 2020 à 19:12
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
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551 > cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024
8 déc. 2020 à 20:04
le problème c'est que tu ne créais qu'une seule variable.
peux-tu alors marquer la discussion comme résolue?
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 Ambassadeur 1 551
8 déc. 2020 à 13:07
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
cvan85 Messages postés 56 Date d'inscription mardi 1 novembre 2011 Statut Membre Dernière intervention 27 août 2024 1
8 déc. 2020 à 17:22
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