繁体   English   中英

Tkinter:如何在最大化(两帧调整大小以适合窗口的调整大小)之后删除填充?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM