[英]How do I resize placed tkinter widgets when the window is resized?
[英]Tkinter: How do I remove padding after maximize (where two frames resize to fit the window's resize)?
注意:这是一个问题,我在回答问题时仅回答自己的问题(仅是为了他人的利益)(或使比我提供的方法更好的人可以提供它)。
在以下示例中,如何使底部的Text
小部件填充屏幕最大化时出现的所有空白空间(因此顶部的Text
小部件在最大化后直接位于顶部)? 我不知道额外填充的原因。 我可以通过为第二个Text
小部件添加额外的行并使用rowspan
来消除一些填充,但是仍然有一些剩余。 我不希望顶部的Text
小部件的高度大于1。
from tkinter import *
tk=Tk()
tk.columnconfigure(0, weight=1)
tk.rowconfigure(0, weight=1)
tk.rowconfigure(1, weight=1)
f=Frame(tk)
f2=Frame(tk)
f.grid(row=0, column=0, sticky=E+W)
f2.grid(row=1, column=0, sticky=N+S+E+W)
t=Text(f, height=1)
t2=Text(f2)
l=Label(f, text="label")
b=Button(f, text="button")
l.pack(side=LEFT)
t.pack(side=LEFT, fill=X, expand=True)
b.pack(side=LEFT)
t2.pack(fill=BOTH, expand=True)
tk.mainloop()
最简单的解决方案是删除行0的权重。给行(或列...)权重时,就是在告诉Tkinter可以用来分配额外空间的比例。 如果两列的重量相同,则它们将获得相同比例的额外空间。 因此,两行的权重均为1时,它们各自将获得相等比例的额外空间。
通过仅将文本小部件行的权重设置为1,只有在调整窗口大小时它才会增长。
在大多数情况下,似乎最有效的方法是使一行和一列恰好具有非零的空格-通常是文本小部件或画布。
只需将第1
行的weight
设置为100
类的大数即可。 然后,它将适当地填充额外的空间(尽管由于按钮的高度与“ Text
小部件的高度不同,所以那里仍然有一些缝隙)。 我不知道这是否是最合适的方法,但是可以。
这里:
from tkinter import *
tk=Tk()
tk.columnconfigure(0, weight=1)
tk.rowconfigure(0, weight=1)
tk.rowconfigure(1, weight=100)
f=Frame(tk)
f2=Frame(tk)
f.grid(row=0, column=0, sticky=E+W)
f2.grid(row=1, column=0, sticky=N+S+E+W)
t=Text(f, height=1)
t2=Text(f2)
l=Label(f, text="label")
b=Button(f, text="button")
l.pack(side=LEFT)
t.pack(side=LEFT, fill=X, expand=True)
b.pack(side=LEFT)
t2.pack(fill=BOTH, expand=True)
tk.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.