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 (donc il faut la nommer)
Je suis passé par un dictionnaire qui me fournit les StringVar():
vardic=dict((self.lst_champs,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):
for i in range(nb_champs):
my_ent=self.lst_champs+"=Entry(frm,textvar=vardic['"+self.lst_champs+"'])"
grid_my_ent=self.lst_champs+".grid(column=1,row="+str(i)+"
"
my_lab="Label(frm,text='"+self.lst_champs+"').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 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 !
PS : à l'edit, des smiley sont apparus à la place de "'])" à la fin de deux lignes de code... pardon