Neutraliser l'utilisation d'un "Button" après l'avoir valider une fois
Résolu/Fermé
cvan85
Messages postés
56
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
27 août 2024
-
22 déc. 2020 à 12:09
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 23 déc. 2020 à 11:55
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 23 déc. 2020 à 11:55
A voir également:
- Neutraliser l'utilisation d'un "Button" après l'avoir valider une fois
- Notice d'utilisation - Guide
- Utilisation chromecast - Guide
- Je suis une chose que les garçons utilisent deux fois par jour et les filles une fois toute leur vie - Forum Loisirs / Divertissements
- Sirène pompiers 5 fois signification ✓ - Forum Loisirs / Divertissements
- Signe fois clavier iphone ✓ - Forum Word
6 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
22 déc. 2020 à 19:23
22 déc. 2020 à 19:23
J'ai essayé ça et ca marche:
pourquoi ca ne marche pas avec le place en fin de button, ne me demande pas pourquoi ...
lanc = Button(can_gen, text='Démarrer\nune partie',bg='#FFE4C4',fg='red',command = lambda : lancement(mat)) lanc.place(x=10, y= 370)
pourquoi ca ne marche pas avec le place en fin de button, ne me demande pas pourquoi ...
yg_be
Messages postés
23298
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
29 octobre 2024
Ambassadeur
1 549
22 déc. 2020 à 12:42
22 déc. 2020 à 12:42
bonjour,
à quoi correspond la variable
nous montres-tu tout ton code?
à quoi correspond la variable
valid?
nous montres-tu tout ton code?
cvan85
Messages postés
56
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
27 août 2024
1
22 déc. 2020 à 13:29
22 déc. 2020 à 13:29
Autant pour moi, je n'ai pas posté les bonnes lignes de code (pb de version)
Désolé.
Voilà les bonnes lignes.
Ds le prog principal:
Ds la proc.
Ds les 2 cas(ligne active ou ligne commentée ds la proc même erreur :
Claude
Désolé.
Voilà les bonnes lignes.
Ds le prog principal:
lanc = Button(can_gen, text='Démarrer\nune partie',bg='#FFE4C4',fg='red',command = lambda : lancement(mat)).place(x=10, y= 370)
Ds la proc.
def lancement(matr): global lanc palette.clear lanc['state'] = DISABLED #lanc.config(state = DISABLED)
Ds les 2 cas(ligne active ou ligne commentée ds la proc même erreur :
File "/Users/..././PYTHON/prog/AZ_V4.py", line 34, in lancement lanc['state'] = DISABLED TypeError: 'NoneType' object does not support item assignment
Claude
Phil_1857
Messages postés
1872
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
28 février 2024
168
22 déc. 2020 à 17:44
22 déc. 2020 à 17:44
Bonsoir Claude,
ca a l'air OK
tu applique bien le 'state' au bouton identifié par la variable lanc
Mais l'erreur dit que lanc est de type NoneType
Il faudrait voir dans quel ordre tu as mis tout ça, donc le code complet ....
ca a l'air OK
tu applique bien le 'state' au bouton identifié par la variable lanc
Mais l'erreur dit que lanc est de type NoneType
Il faudrait voir dans quel ordre tu as mis tout ça, donc le code complet ....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cvan85
Messages postés
56
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
27 août 2024
1
22 déc. 2020 à 18:12
22 déc. 2020 à 18:12
Bonsoir Phil,
Merci pour ton retour.
Voilà le code complet.
Merci pour ton retour.
Voilà le code complet.
#!/usr/bin/env python3.9 ####################### # # # Jeu AZ V 4.0 # # # ####################### #import pdb; pdb.set_trace() from tkinter import * import random import time ###### Définition des fonctions ############## def aff_widg(canva): for i in range(5): for j in range(5): canva.create_rectangle((40*(i+1),40*(j+1)),((40*(i+1)+40),40*(j+1)+40)) #def maj_palette(co): ######### # mettre à jour le dico par +1 sur couleur tirée def sel_coul(): ind=random.randint(1,7) coul=choix[ind-1] palette[coul] +=1 return coul ####Début de partie def lancement(matr): global lanc palette.clear lanc['state'] = DISABLED #lanc.config(state = DISABLED) for c in range(7): palette[choix[c-1]] = 0 for i in range(5): couleur=sel_coul() can_gen.create_rectangle(((40*(i+1),40),((40*(i+1)+40),40+40)), fill=couleur,width=2, outline='black') lig_courant[i]=couleur matr[0]=lig_courant fd.write(lig_courant[0]+lig_courant[1]+lig_courant[2]+lig_courant[3]+lig_courant[4]) Label(can_gen, text= "Pour chaque ligne supplémentaire\n cochez 2 cases et validez",bg='#FEFEE2',fg='blue').place(x=40, y= 310) def autre_tirage(matrice): global lig_courant global ind_prec nb_case = 0 if (r_v_c1.get()): nb_case=nb_case + 1 if (r_v_c2.get()): nb_case=nb_case + 1 if (r_v_c3.get()): nb_case=nb_case + 1 if (r_v_c4.get()): nb_case=nb_case + 1 if (r_v_c5.get()): nb_case=nb_case + 1 if nb_case != 2: Label(can_gen, text= "Attention ne cochez que 2 cases! " ,bg='#FEFEE2',fg='red').place(x=40, y= 310) r_v_c1.set(False) r_v_c2.set(False) r_v_c3.set(False) r_v_c4.set(False) r_v_c5.set(False) else: if(matrice[1][0]=='vide'): lig=2 ind_prec=0 elif (matrice[2][0]=='vide'): lig=3 ind_prec=1 elif (matrice[3][0]=='vide'): lig=4 ind_prec=2 elif (matrice[4][0]=='vide'): lig=5 ind_prec=3 if (r_v_c1.get()): couleur=sel_coul() col=1 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=couleur,width=2, outline='black') lig_courant[0]=couleur r_v_c1.set(False) else: col=1 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=matrice[ind_prec][0],width=2, outline='black') lig_courant[0]=matrice[ind_prec][0] if (r_v_c2.get()): couleur=sel_coul() col=2 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=couleur,width=2, outline='black') lig_courant[1]=couleur r_v_c2.set(False) else: col=2 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=matrice[ind_prec][1],width=2, outline='black') lig_courant[1]=matrice[ind_prec][1] if (r_v_c3.get()): couleur=sel_coul() col=3 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=couleur,width=2, outline='black') lig_courant[2]=couleur r_v_c3.set(False) else: col=3 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=matrice[ind_prec][2],width=2, outline='black') lig_courant[2]=matrice[ind_prec][2] if (r_v_c4.get()): couleur=sel_coul() col=4 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=couleur,width=2, outline='black') lig_courant[3]=couleur r_v_c4.set(False) else: col=4 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=matrice[ind_prec][3],width=2, outline='black') lig_courant[3]=matrice[ind_prec][3] if (r_v_c5.get()): couleur=sel_coul() col=5 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=couleur,width=2, outline='black') lig_courant[4]=couleur r_v_c5.set(False) else: col=5 can_gen.create_rectangle(((40*(col),40*(lig)),((40*(col)+40),40*(lig)+40)), fill=matrice[ind_prec][4],width=2, outline='black') lig_courant[4]=matrice[ind_prec][4] ind_cour=ind_prec + 1 matrice[ind_cour]=lig_courant fd.write(lig_courant[0]+lig_courant[1]+lig_courant[2]+lig_courant[3]+lig_courant[4]) def rien(): return 1 ####### Programme principal ###################### # Définitions des variables globales choix = ['blue','green','red','yellow','purple','pink','white'] ind_prec = 0 palette = {} lig_courant =['vide','vide','vide','vide','vide'] mat = [['vide','vide','vide','vide','vide'],['vide','vide','vide','vide','vide'],['vide','vide','vide','vide','vide'],['vide','vide','vide','vide','vide'],['vide','vide','vide','vide','vide']] ####### Début du programme principal ############# fd=open('mat_file','w') fen1=Tk() fen1.title("Jeu AZ V4.0") fen1.geometry("420x470") can_gen=Canvas(fen1, width=360, height=410, bg ="#FEFEE2") can_gen.place(x=30,y=30) aff_widg(can_gen) r_v_c1 = BooleanVar(value=False) r_v_c2 = BooleanVar(value=False) r_v_c3 = BooleanVar(value=False) r_v_c4 = BooleanVar(value=False) r_v_c5 = BooleanVar(value=False) c1 = Checkbutton(can_gen, text = "1", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c1).place(x=40,y=280) c2 = Checkbutton(can_gen, text = "2", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c2).place(x=80,y=280) c3 = Checkbutton(can_gen, text = "3", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c3).place(x=120,y=280) c4 = Checkbutton(can_gen, text = "4", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c4).place(x=160,y=280) c5 = Checkbutton(can_gen, text = "5", height = 2, width = 5,bg ="#FEFEE2",variable= r_v_c5).place(x=200,y=280) valid = Button(can_gen, text = "Validez", height = 2, width = 7,bg ="#FEFEE2",fg='red',command = lambda: autre_tirage(mat)).place(x=295,y=280) lanc = Button(can_gen, text='Démarrer\nune partie',bg='#FFE4C4',fg='red',command = lambda : lancement(mat)).place(x=10, y= 370) Button(can_gen, text='FIN \nde partie',bg='#AD4F09',fg='red', command = fen1.quit).place(x=250,y=370) ####### Boucle d'attente d'évènements ############## fen1.mainloop() ####### Effacement fenêtre - Sortie programme ###### fd.close fen1.destroy() ####################################################
cvan85
Messages postés
56
Date d'inscription
mardi 1 novembre 2011
Statut
Membre
Dernière intervention
27 août 2024
1
22 déc. 2020 à 20:48
22 déc. 2020 à 20:48
Merci Phil et bravo yg_be pour l'explication.
Joyeuses fêtes à vous 2.
Claude
Joyeuses fêtes à vous 2.
Claude
22 déc. 2020 à 19:33
lanc est ce que retourne la fonction Button
plac est ce que retourne la fonction place
on voudrait sinon écrire
23 déc. 2020 à 11:55
C'est bien ça
J'ai fait des tests ensuite pour imprimer les types des valeurs de retour
Je ne suis jamais tombé sur le problème car je fait toujours ça en 2 instructions :