Bonjour,
Je sèche...
Je cherche à générer en python (2.6.2), dans une fonction une toplevel qui me présente les données d'une base (SQLite).
Je voudrais pouvoir utiliser le même gabarit pour ensuite modifier ou ajouter une entrée dans la table.
Je voudrais aussi que les champs soient nommés automatiquement en fonction de la structure de la table.
En gros, dans ma fenêtre, je veux voir ligne par ligne :
un Label avec le nom du champ et une Entry avec la valeur. L'entry doit pouvoir être configuré par la suite (DISABLED,..)donc il faut la nommer.

Je suis passé par un dictionnaire qui me fournit les StringVar():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
vardic=dict((self.lst_champs[i],StringVar()) for i in range(nb_champs))
et par des "exec() in globals" pour attribuer automatiquement un nom à mes entry.

dans une boucle, (liée au nombre de champs):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
for i in range(nb_champs):
	my_ent=self.lst_champs[i]+"=Entry(frm,textvar=vardic['"+self.lst_champs[i]+"'])"
        grid_my_ent=self.lst_champs[i]+".grid(column=1,row="+str(i)+")"
	my_lab="Label(frm,text='"+self.lst_champs[i]+"').grid(column=0,row="+str(i)+")"
 
	exec (my_lab) in globals()
        exec (my_ent) in globals()
        exec (grid_my_ent) in globals()
PROBLEME : selon que je lance l'exec du Label en premier ou en dernier, il apparait (centré par dessus mon entry) ou pas (en dessous ?).
Comme si la valeur de column dans grid n'était pas prise en compte alors que celle de row l'est.
Si quelqu'un a une petite idée de ce qu'il m'arrive...
un peu d'aide serait bienvenue !
Merci !