调整大小 window 而不覆盖小部件

Resize window without covering widget

此 Python-tkinter 程序使用包几何管理器在根 window 中放置一个文本小部件和一个 "quit" 按钮 -- 文本小部件位于按钮上方。

import tkinter as tk
root = tk.Tk()
txt = tk.Text(root, height=5, width=25, bg='lightblue')
txt.pack(fill=tk.BOTH,expand=True)
txt.insert('1.0', 'this is a Text widget')
tk.Button(root, text='quit', command=quit).pack()
root.mainloop()

当我通过向上拖动其下边框来调整根 window 的大小时,我失去了退出按钮。它消失在根 window 的边框下。但我试图让退出按钮与 window 的边框一起向上移动,同时让文本小部件缩小。我在 pack() 和 "height" 中玩过 "fill" 和 "expand",但都没有成功。

有什么简单的方法可以在将 window 拖动得更小的同时保持退出按钮可见?

(在研究过程中,我注意到具有 "sticky" 单元格的网格几何可以轻松完成此任务。但我仍然很想知道是否有任何简单的方法可以对包几何执行相同的操作。 )

在打包文本小部件之前打包退出按钮。当 window 对于它的内容来说太小时,它开始以相反的顺序收缩小部件,直到它不能再收缩,然后它开始剪裁小部件。

作为 window 中最大的小部件,文本小部件在开始被剪裁之前可能会缩小很多。