mise en page ds fenetre tkinter

Le
alainL
Bonjour,
Je définis une taille de fenetre :

fen1.geometry("%dx%d"%(600,448))

des labels, un message et un canvas et un entry.

can1 = Canvas(fen1,width‚, heightD8,bg='white')
photo = PhotoImage(file='reliure.gif')
item = can1.create_image(41,224, image=photo)

avec grid, j'essaie de placer mes labels ds une col à gauche toute.

txt1.grid(row=1, sticky=W)
txt2.grid(row=2, sticky=W)

txt7.grid(row=7, sticky=W)

puis mon canvas au milieu de la fenetre:

can1.grid(row=1,column=1,rowspan=7)

et mon mess et entry ds la col de droite:

notes.grid(row=1,column=2,rowspan=4)
entr1.grid(row=5,column=2, rowspan=2)

Mais l'image n'est pas au milieu et surtout, les label.txt1,2, ne se
placent pas complètement à gauche de la fenetre . Ils laissent une marge
(column=0 ne donne rien de mieux) .
Peut-être devrais-je définir les largeurs de colonnes ? Pas trouvé de
modèle :-((
Merci pour l'aide !
alain
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric Brunel
Le #661858
On Fri, 30 Nov 2007 18:49:55 +0100, alainL wrote:

Bonjour,
Je définis une taille de fenetre :

fen1.geometry("%dx%d"%(600,448))

des labels, un message et un canvas et un entry.

can1 = Canvas(fen1,width‚, heightD8,bg='white')
photo = PhotoImage(file='reliure.gif')
item = can1.create_image(41,224, image=photo)


Une remarque en passant: si c'est juste afficher une image que tu veux, il
y a plus simple:

photo = PhotoImage(file='reliure.gif')
label = Label(fen1, image=photo)

Comme ça, pas besoin de préciser les dimensions ou le placement: ça se
fait tout seul...

avec grid, j'essaie de placer mes labels ds une col à gauche toute.

txt1.grid(row=1, sticky=W)
txt2.grid(row=2, sticky=W)
...
txt7.grid(row=7, sticky=W)

puis mon canvas au milieu de la fenetre:

can1.grid(row=1,column=1,rowspan=7)

et mon mess et entry ds la col de droite:

notes.grid(row=1,column=2,rowspan=4)
entr1.grid(row=5,column=2, rowspan=2)

Mais l'image n'est pas au milieu et surtout, les label.txt1,2,... ne se
placent pas complètement à gauche de la fenetre . Ils laissent une marge
(column=0 ne donne rien de mieux) .


Précises-le quand même. Se baser sur les valeurs par défaut n'est jamais
très bon...

Peut-être devrais-je définir les largeurs de colonnes... ? Pas trouvé de
modèle :-((


En fait, si tu ne dis rien, par défaut, toutes les lignes et colonnes vont
s'agrandir pareil lorsque tu redimensionnes la fenêtre. Pour préciser
exactement quelles sont celles qui doivent le faire, il faut configurer
les "poids" (weight) des lignes et colonnes:

fen1.grid_columnconfigure(1, weight=1)

Sauf que pour les lignes je ne sais pas: ça dépend de ce que tu veux
faire... La méthode sera grid_rowconfigure.

Merci pour l'aide !


HTH
--
python -c "print ''.join([chr(154 - ord(c)) for c in
'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"

alainL
Le #661851
"Eric Brunel" discussion :
On Fri, 30 Nov 2007 18:49:55 +0100, alainL wrote:

Bonjour,
Je définis une taille de fenetre :

fen1.geometry("%dx%d"%(600,448))

des labels, un message et un canvas et un entry.




.................
avec grid, j'essaie de placer mes labels ds une col à gauche toute.

......................


puis mon canvas au milieu de la fenetre:

............................


Mais l'image n'est pas au milieu et surtout, les label.txt1,2,... ne se
placent pas complètement à gauche de la fenetre . Ils laissent une marge
(column=0 ne donne rien de mieux) .


Précises-le quand même. Se baser sur les valeurs par défaut n'est jamais
très bon...

....................>

En fait, si tu ne dis rien, par défaut, toutes les lignes et colonnes vont
s'agrandir pareil lorsque tu redimensionnes la fenêtre. Pour préciser
exactement quelles sont celles qui doivent le faire, il faut configurer
les "poids" (weight) des lignes et colonnes:

fen1.grid_columnconfigure(1, weight=1)

Sauf que pour les lignes je ne sais pas: ça dépend de ce que tu veux
faire... La méthode sera grid_rowconfigure.



Finalement : text.place (x, y )
Maintenant, comment centrer ? :-))) Ah, si le 10;20 pouvait correspondre
au centre du texte !!!

alainL


Publicité
Poster une réponse
Anonyme