Разверните текстовый виджет, чтобы заполнить весь родительский фрейм в Tkinter
Я получил Text
widget, и я хотел бы, чтобы он расширялся и заполнял весь свой родитель, используя диспетчер геометрии сетки.
согласно примерам, которые я видел, эта примерная программа должна работать, увы, это не так, при расширении окна, содержимое не изменяется.
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()
любая помощь приветствуется
для чего это стоит, я работаю в Python 2.7 (последний 2.X версия) и кодирование в PyCharm, хотя я не думаю, что IDE соответствующий.
3 ответов
при использовании сетки любое дополнительное пространство в родителе выделяется пропорционально "весу" строки и / или столбца (т. е. столбец с весом 2 получает вдвое больше места, чем один с весом 1). По умолчанию строки и столбцы имеют вес 0 (ноль), что означает, что им не предоставляется дополнительное пространство.
вам нужно дать столбец, что виджет находится в ненулевом весе, так что любое дополнительное пространство, когда окно растет, выделяется этому колонна.
root.grid_columnconfigure(0, weight=1)
Вам также нужно будет указать вес для строки и липкое значение N+S+E+W
Если вы хотите расти во всех направлениях.
поскольку ваше окно содержит только один виджет, и вы хотите, чтобы этот виджет заполнял все окно, было бы проще использовать pack
диспетчер геометрия вместо grid
input_text_area.pack(expand=True, fill='both')
expand=True
Tkinter позволяет виджету расширяться, чтобы заполнить дополнительное пространство в Мастере геометрии. fill='both'
позволяет виджету расширяться как по горизонтали, так и по вертикали.
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()
Не уверен, что это то, что вы хотите. но это заполняет весь экран.