2015-02-09 7 views
8

Ich habe dieses Widget , und ich möchte für es zu erweitern und füllen Sie alle übergeordneten über den Grid-Geometrie-Manager.Erweitern Sie Text-Widget, um den gesamten übergeordneten Frame in Tkinter zu füllen

Nach den Beispielen, die ich gesehen habe, sollte dieses Beispielprogramm funktionieren, ach, es tut nicht, wenn das Fenster erweitert wird, ändert der Inhalt nicht die Größe.

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() 

Jede Hilfe

geschätzt

Für das, was es wert ist, ich laufe in Python 2.7 (neueste Version 2.x) und Codierung in PyCharm, obwohl ich nicht glaube, die IDE relevant ist .

+1

afaik müssen Sie Spaltengewichte oder etwas hinzufügen ... Ich erinnere mich, dieses Problem einmal zu haben. Dieser Link scheint relevant http://userpages.umbc.edu/~dhood2/courses/cmsc433/spring2010/?section=Notes&topic=Python¬es=94 –

Antwort

11

Bei Verwendung von Raster wird jedes zusätzliche Leerzeichen im übergeordneten Element proportional zum "Gewicht" einer Zeile und/oder Spalte zugewiesen (dh eine Spalte mit einem Gewicht von 2 erhält doppelt so viel Platz wie eins mit ein Gewicht von 1). Standardmäßig haben Zeilen und Spalten eine Gewichtung von 0 (null), was bedeutet, dass ihnen kein zusätzlicher Platz zugewiesen wird.

Sie müssen der Spalte angeben, dass das Widget eine von Null verschiedene Gewichtung hat, so dass zusätzlicher Platz, wenn das Fenster wächst, dieser Spalte zugewiesen wird.

root.grid_columnconfigure(0, weight=1) 

Sie werden auch ein Gewicht für die Reihe, und ein klebriges Wert von N+S+E+W angeben müssen, wenn Sie wollen, dass es in alle Richtungen wachsen.

5

Da Ihr Fenster nur ein Widget enthält und Sie dieses Widget das gesamte Fenster zu füllen, wäre es einfacher, die pack geometry manager zu verwenden anstelle von grid

input_text_area.pack(expand=True, fill='both') 

expand=True Tkinter sagt das Widget zu ermöglichen, zu erweitern Füllen Sie zusätzliches Leerzeichen im Geometrie-Master. fill='both' ermöglicht es, das Widget sowohl horizontal als auch vertikal zu erweitern.

+1

Mein Code war nur ein Beispiel, mein Layout ist ein bisschen komplexer, ich reduzierte die Problem mit dem minimalen Ausdruck, ich möchte nicht wirklich den Pack Geometry Manager verwenden, finde ich es noch schrecklicher für weniger als trivial UIs zu verwenden. –

0
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() 

nicht sicher, ob dies das ist, was Sie wollen. aber das füllt den gesamten Bildschirm.

Verwandte Themen