Tkinter将try 满足文本小部件的要求大小.由于没有指定大小,文本小部件将请求80x24的大小.当你把窗口的大小调整得更小时,pack
会试图按要求的大小为所有东西腾出空间,并且它会按堆叠顺序这样做.
随着窗口的缩小,第一个文本小部件的空间都有了,但两个都不够.因为没有足够的空间,它必须从剩余的小部件中减go 空间.因此,它开始删除最后一个文本小部件.
为了解决这个问题,您可以将文本窗口小部件的请求大小设置为一个小值,该值几乎适用于任何窗口大小,然后通过设置整个窗口的大小来强制它们增长.这样,pack
将首先 for each 小窗口分配足够的空间,然后在有额外空间时将其平均扩展.
例如:
import tkinter as tk
window = tk.Tk()
window.geometry("400x400")
editor = tk.Text(bg='red', width=1, height=1)
output = tk.Text(bg='green', width=1, height=1)
editor.pack(side='top',fill='both',expand=True)
output.pack(side='top',fill='both',expand=True)
window.mainloop()
另一种解决方案是使用grid
,它允许您指定行和列的大小应该一致.
import tkinter as tk
window = tk.Tk()
editor = tk.Text(bg='red')
output = tk.Text(bg='green')
editor.grid(row=0, column=0, sticky="nsew")
output.grid(row=1, column=0, sticky="nsew")
window.grid_columnconfigure(0, weight=1)
window.grid_rowconfigure((0,1), weight=1, uniform=1)
window.mainloop()