web-dev-qa-db-fra.com

Différence entre les options "remplir" et "étendre" pour la méthode du pack tkinter

Je sais que c'est une question trop banale, mais je suis nouveau sur python et je viens de commencer à utiliser le module tkinter. J'ai effectivement cherché partout à ce sujet et je ne trouve pas de réponse satisfaisante. J'ai trouvé ce qui suit:

fill option: elle détermine s'il faut utiliser plus d'espace ou conserver "ses propres" dimensions.

expand option: elle traite de l'expansion du widget parent.

Le problème est que ces deux sons plus ou moins identiques . J'ai même essayé quelques exemples en basculant entre les 4 valeurs de fill et 2 valeurs de expand mais j'ai reçu plus ou moins la même sortie dans 2 ou 3 cas, à cause de laquelle j'ai ceci question. Toute aide serait appréciée à cet égard. Merci d'avance!

25
Python_user

De effbot :

L'option fill indique au gestionnaire que le widget souhaite remplir tout l'espace qui lui est affecté. La valeur contrôle la façon de remplir l'espace; [~ # ~] les deux [~ # ~] signifie que le widget doit s'étendre à la fois horizontalement et verticalement, [ ~ # ~] x [~ # ~] signifie qu'il ne doit se développer que de manière horisontale et [~ # ~] y [~ # ~] signifie qu'il ne doit s'étendre que verticalement.

L'option expand indique au gestionnaire d'attribuer de l'espace supplémentaire à la boîte de widget. Si le widget parent est plus grand que nécessaire pour contenir tous les widgets compressés, tout espace excédentaire sera distribué entre tous les widgets dont l'option expand est définie sur un valeur non nulle.

Ainsi, fill indique au widget de s'agrandir en fonction de l'espace disponible dans la direction spécifiée, expand indique au maître de prendre tout espace qui n'est affecté à aucun widget et de le distribuer à tous. widgets qui ont une valeur expand non nulle.

La différence devient claire lors de l'exécution de cet exemple:

import Tkinter as tk

root = tk.Tk()
root.geometry('200x200+200+200')

tk.Label(root, text='Label', bg='green').pack(expand=1, fill=tk.Y)
tk.Label(root, text='Label2', bg='red').pack(fill=tk.BOTH)

root.mainloop()

Vous pouvez voir que l'étiquette avec expand=1 obtient autant d'espace qu'il lui est disponible, mais ne l'occupe que dans la direction spécifiée, Y. L'étiquette avec fill=tk.BOTH s'étend dans les deux sens, mais dispose de moins d'espace disponible.

Expand vs Fill

30
fhdrsdg