web-dev-qa-db-fra.com

Développez le widget Texte pour remplir le cadre parent entier dans Tkinter

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.

10
So Many Goblins

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. 

15
Bryan Oakley

É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.

6
iCodez
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. 

0
Ajay