C'est le code qui me pose problème.
f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)
l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()
Si je commente les lignes avec l'étiquette, le cadre s'affiche avec la bonne largeur. Cependant, l'ajout de l'étiquette semble réduire le cadre à la taille de l'étiquette. Y a-t-il un moyen d'empêcher que cela se produise?
Par défaut, pack
et grid
réduisent ou développent un widget pour l'adapter à son contenu , ce que vous voulez 99,9% du temps. Le terme qui décrit cette fonctionnalité est "propagation géométrique". Il existe une commande pour activer ou désactiver la propagation de la géométrie lors de l'utilisation de pack
(et une similaire pour grid
).
Puisque vous utilisez pack, la syntaxe serait:
f.pack_propagate(0)
ou peut-être root.pack_propagate(0)
, selon les widgets que vous souhaitez réellement affecter. Cependant, comme vous n'avez pas donné la hauteur du cadre, sa hauteur par défaut est d'un pixel, vous ne pouvez donc toujours pas voir les widgets intérieurs. Pour obtenir le plein effet de ce que vous voulez, vous devez donner au cadre contenant à la fois une largeur et une hauteur.
Cela étant dit, la grande majorité du temps, vous devriez laisser Tkinter calculer la taille. Lorsque vous désactivez la propagation de la géométrie, votre interface graphique ne répond pas bien aux changements de résolution, aux changements de polices, etc. Les gestionnaires de géométrie de Tkinter (pack
, place
et grid
) sont remarquablement puissant. Apprenez à profiter de ce pouvoir.