Question

Ceci est le code qui me donne du mal.

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, l'affichage du cadre avec la bonne largeur. Cependant, en ajoutant l'étiquette semble rétrécir le cadre vers le bas à la taille de l'étiquette. Y at-il un moyen d'empêcher que cela se produise?

Était-ce utile?

La solution

Par défaut, les cadres de tk rétrécir ou grandir pour adapter leur contenu , qui est ce que vous voulez 99% du temps. Le terme qui décrit cette fonction est « la propagation de la géométrie ». Il y a une commande pour activer la propagation de la géométrie activée ou désactivée lorsque en utilisant pack (et un similaire pour une grid).

Puisque vous utilisez paquet, la syntaxe serait:

f.pack_propagate(0)

ou peut-être root.pack_propagate(0), selon le widget de (s) que vous voulez réellement affecter. Cependant, parce que vous n'avez pas donné la hauteur du cadre, il est la hauteur par défaut est de 1 pixel de sorte que vous pouvez toujours pas voir les widgets intérieur. Pour obtenir le plein effet de ce que vous voulez, vous devez donner le 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 activez la propagation de la géométrie de votre interface graphique ne répond pas bien aux changements dans la résolution, les changements dans les polices, etc. Les gestionnaires de la géométrie de Tkinter (pack, place et grid) sont remarquablement puissants. Apprenez à tirer profit de ce pouvoir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top