Как упоминал @kevin, он работает как задумано, textwidget
в основном пуст и занимает большую пустую область, это то, что заставляет вас думать, что менеджер геометрии не сжимает окно для виджетов.
this:
(я удалил изображения и шрифты, которые не были предоставлены, и ненужные)
import tkinter as tk
class InfoBox(tk.Toplevel):
def __init__(self, parent, msg):
tk.Toplevel.__init__(self, parent)
self.parent = parent
self.msg = msg
self.title = "Gassy"
frame_left = tk.Frame(self)
frame_right = tk.Frame(self)
frame_left.grid(row=0, column=0, sticky=tk.NSEW)
frame_right.grid(row=0, column=1, sticky=tk.NSEW)
# textbox = tk.Text(frame_right)
# textbox.grid(row=0, column=0)
# textbox.insert(tk.END, self.msg)
# textbox.config(state=tk.DISABLED)
tk.Button(frame_left, text="Den er grei!", command=self.destroy).grid(row=1, column=0)
root = tk.Tk()
info = InfoBox(root, '123 ' * 1000)
root.mainloop()
производит, что:

, тогда как:
import tkinter as tk
class InfoBox(tk.Toplevel):
def __init__(self, parent, msg):
tk.Toplevel.__init__(self, parent)
self.parent = parent
self.msg = msg
self.title = "Gassy"
frame_left = tk.Frame(self)
frame_right = tk.Frame(self)
frame_left.grid(row=0, column=0, sticky=tk.NSEW)
frame_right.grid(row=0, column=1, sticky=tk.NSEW)
textbox = tk.Text(frame_right)
textbox.grid(row=0, column=0)
textbox.insert(tk.END, self.msg)
textbox.config(state=tk.DISABLED)
tk.Button(frame_left, text="Den er grei!", command=self.destroy).grid(row=1, column=0)
root = tk.Tk()
info = InfoBox(root, '123 ' * 1000)
root.mainloop()
производит это:

Ясно, что Toplevel
подкласс корректирует свой размер в соответствии с содержащимися в нем виджетами
. Тестовый виджет отображается с определенным размером независимо от его содержимого.Toplevel
изменяет размеры вокруг виджетов, а НЕ вокруг того, что вставлено в текстовый виджет;как и в элементарном окне текстового процессора, текстовый процессор не сжимается и не расширяется при вводе или редактировании текста.То же самое применимо и здесь.
Ключевые слова args width
и height
позволяют настроить размер (в виде количества символов или строк) текстового виджета