J'ai reçu ce widget Text
et j'aimerais qu'il se développe et remplisse tout son parent, à l'aide du gestionnaire de géométrie Grid.
D'après les exemples que j'ai vus, cet exemple de programme devrait fonctionner, mais hélas il ne le fait pas. Lors du développement de la fenêtre, le contenu n'est pas redimensionné.
from Tkinter import *
root = Tk()
input_text_area = Text(root)
input_text_area.grid(row=1, column=0, columnspan=4, sticky=W+E)
input_text_area.configure(background='#4D4D4D')
root.mainloop()
Toute aide est appréciée
Pour ce que ça vaut, je tourne sous Python 2.7 (dernière version 2.x) et je code avec PyCharm, bien que je ne pense pas que le IDE soit pertinent.
Lors de l’utilisation de la grille, l’espace supplémentaire dans le parent est attribué proportionnellement au "poids" d’une ligne et/ou d’une colonne ). Par défaut, les lignes et les colonnes ont un poids de 0 (zéro), ce qui signifie qu'aucun espace supplémentaire ne leur est donné.
Vous devez indiquer à la colonne que le widget a un poids non nul, de sorte que tout espace supplémentaire lorsque la fenêtre s'agrandit soit alloué à cette colonne.
root.grid_columnconfigure(0, weight=1)
Vous devrez également spécifier un poids pour la ligne et une valeur constante de N+S+E+W
si vous souhaitez que la ligne croisse dans toutes les directions.
Étant donné que votre fenêtre ne contient qu'un seul widget et que vous souhaitez que ce dernier remplisse toute la fenêtre, il serait plus simple d'utiliser le gestionnaire de géométrie pack
au lieu de grid
input_text_area.pack(expand=True, fill='both')
expand=True
indique à Tkinter d'autoriser le widget à se développer pour remplir tout espace supplémentaire dans le masque de géométrie. fill='both'
permet au widget de se développer horizontalement et verticalement.
from tkinter import *
root = Tk()
input_text_area = Text(root)
input_text_area.grid(row=0, column=0, columnspan=4, sticky=N+S+W+E)
input_text_area.configure(background='#4D4D4D')
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
root.mainloop()
je ne sais pas si c'est ce que vous voulez. mais cela remplit tout l'écran.