le "print valeur" est là pour me montrer l'état du dictionnaire
j'aurais besoin de récupérer ce dictionnaire pour l'envoyer dans une autre fonction une fois les boutons cochés mais je ne vois pas comment faire ... pour cela j'en appelle à votre bonne volonté pour m'aider
je pensais d'abord mettre le code que j'ai mi plus haut dans une fonction avec un "return valeurs" ou alors déclarer "valeurs" en tant que variable globale mais ni l'une des solutions ni l'autre ne me semble correctes ...
je commence tout juste la programmation événementielle et je suis très débutant en interface graphique
for a in tabchk: a.grid(row i-j*6+4,column j)
i+=1
if i%6==0:
j+=1
###########################################################
n=0
dico_canal = {}
while n < 36:
print tabchk[n]['text'],tabchk[n].etat
dico_canal[tabchk[n]['text'] ]= tabchk[n].etat
n +=1
lespinx
Messages postés106Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention23 novembre 202277 9 févr. 2009 à 21:31
Bonsoir
Ci joint un code qui permet de lire et modifier l'état d'un Radio Bouton.
# -*- coding: ISO-8859-15 -*-
from Tkinter import *
def clic_radiobouton():
#Traitement de l'évenement clic sur Radio Bouton
#Lecture de l'état du Radion Bouton
etat_radiobouton = var_Radio.get()
#Ici on traite le cas du clic sur "B1" ==> faire un clic sur "B1"
if etat_radiobouton == "B1":
print "Vous avez cliqué le bouton",etat_radiobouton
#Ici on modifie l'état du Radio Bouton "B5" (6eme Radio Bouton)
#Il y a 6 Radio Boutons numérotés de 0 a 5
Bouton_Radio[5].select()
etat_radiobouton = var_Radio.get()
print "Vous avez modifié l'état du bouton",etat_radiobouton
if __name__ == '__main__':
AppliTK = Tk()
#Création du bouton Radio
Bouton_Radio = []
var_Radio = StringVar()
for element in [ "B0" , "B1" , "B2", "B3", "B4", "B5"]:
rb = Radiobutton(AppliTK,
text = element,
value = element,
variable = var_Radio,
command = clic_radiobouton,
takefocus = False)
Bouton_Radio.append(rb) #rb = Identifiant interne
#Placement des Boutons Radio
for element in Bouton_Radio:
element.pack(side = LEFT)
#Activation du bouton Radio "B2"
Bouton_Radio[2].select()
lespinx
Messages postés106Date d'inscriptionlundi 9 octobre 2006StatutMembreDernière intervention23 novembre 202277 7 févr. 2009 à 13:37
Re-bonjour thibault7249
Si j'ai bien compris, la question est : comment faire pour passer un dictionnaire dans un appel de fonction?
exemple
def test(dic_test):
print "def ",dic_test, id(dic_test)
dic_main = {"a":1,"b":2,"c":3}
print "main",dic_main, id(dic_main)
test(dic_main) #appel de la fonction
On indique le nom du dictionnaire dans les paramètres d'appel de la fonction.
Le print "id" du dictionnaire est là pour montrer qu'en réalité on passe dans les paramètres de la fonction, la référence à l'objet et non pas le contenu de l'objet.
a.grid(row (i-j*6)+4,column j)
i+=1
if i%6==0:
j+=1
Le tableau s'initialise correctement mais dès qu'on coche une case il me sort une insulte du type " index out of range" sur la fonction checkcheck() et 36 juste avant ce qui correpond au "print i" de la fonction, donc je me dis que c'est normal qu'il m'insulte cet empafé vu qu'il va pas chercher au bon endroit ...
Mon problème : Comment je fais pour dire aux checkbutton quelle place il a dans le tableau ? ou Comment je créé plusieurs checkbutton utilisables avec une boucle ?
J'ai l'impression que je fais nimporte quoi là en fait
PS : Le gras n'est pas une pointe de narcicisme c'est juste pour différencier le code du texte ...
Cordialement
D'avance Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
checkButtonsValues = {}
parametres = np.arange(0,36)
tabchk = []
for parametre in parametres:
var = IntVar(); chk Checkbutton(text parametre , variable = var, command = checkcheck)
tabchk.append(chk)
checkButtonsValues[parametre]= var
j=0
i=0
for a in tabchk:
a.grid(row (i-j*6)+4,column j)
i+=1
if i%6==0:
j+=1
###########################################################################################
###########################################################################################
Désolé je prend beaucoup de place à mettre mes lignes de code
Par contre je sais toujours pas comment modifier l'état de la case 17 par exemple ( je sais coché une case ) mais j'arrive pas à dire que c'est ELLE qui est cochée. Je sais pas si c'est compréhensible ...
Endoril
Messages postés1Date d'inscriptionmardi 22 juillet 2008StatutMembreDernière intervention19 février 2009 19 févr. 2009 à 06:41
Bonjour,
oui effectivement, ca peut
Mais pourrais tu commenter ton code stp ?
Je cherche a faire un prog qui lance une appli ou une autre selon l'etat des boutons.
Par exemple appli1.exe quand loption est cochee aplli2.exe si elle ne l'est pas.
A partir de ce code on peut sans doute mettre ton dictionnaire sous forme d'un fichier.txt ?
thibault7249
Messages postés21Date d'inscriptionlundi 2 juin 2008StatutMembreDernière intervention20 février 2009 19 févr. 2009 à 12:00
Alors ma solution est de faire un tableau de checkbutton dérivés.
J'ai créé une classe dérivée du Checkbutton :
class CheckbuttonT(Checkbutton):
#parametre "etat" de type booleen (prend soit True soit False)
etat = False
#methode de la clase derivee qui change l'etat
def setEtat(self):
#si l'etat est faux on le met en vrai if self.etat False : self.etat True
#sinon on le met en faux
else: self.etat = False
#constructeur faisant appel au constructeur du Checkbutton de Tkinter
def __init__(self,_parametre):
#on remarque que "command" lance "setEtat" quand on clique dessus
#c'est a dire que l'on modifie le paramettre etat du bouton lorsque l'on clique dessus Checkbutton.__init__(self, text _parametre,command self.setEtat)
Puis quand je créé mes bouton :
#on fabrique une suite de 0 a 36 non-inclu
parametres = np.arange(0,36)
#on declare "tabchk" en variable globale pour pouvoir l'utiliser dans une fonction plus tard
global tabchk
tabchk = []
# Pour chaques nombre de la suite "parametres" on ajoute un checkbutton a tabchk
for parametre in parametres:
#initialisation des variables qui placent les checkbuttons
j=0
i=0
for a in tabchk: a.grid(row i-j*6+6,column j)
i+=1
if i%6==0:
j+=1
Après j'ai un bouton simple :
boutton = Button(text="Afficher ", command= ta fonction )
boutton.grid(row =1, column= 1)
Et c'est dans ta fonction que tu utilises "tabchk.etat" comme par exemple ici :
while n < len(tabchk):
dico_canal[tabchk[n]['text'] ] = tabchk[n].etat
n +=1
Après si c'est "une application OU une autre" je te conseille de travailler sur le script de lespinx sur les radiobutton qui explique très clairement et je l'en remercie encore de son post.
Mon code n'est pas très bon j'ai fait plein ed modif rien qu'en le relisant vite fait.