2
当您使用grid
创建新窗口小部件并将其放在窗口中或使用说grid_forget
拆除窗口时,包含窗口的维度将根据新添加或删除的窗口小部件的大小分别增大或缩小。 但是,当您使用geometry()
将包含窗口的大小设置为特定数量时,上述操作不会再影响包含窗口的大小。Python,Tkinter - 当您通过geometry()设置窗口的大小时,会发生什么情况,它的大小将不再随元素的大小而变化?
是否有任何诀窍让包含窗口大小再次响应(基于其元素的大小)后手动设置其大小一次?
看看下面的代码滑:
import Tkinter
def func1():
l1.destroy()
w.update()
print w.winfo_width(), "x", w.winfo_height()
def func2():
print w.geometry(str(w.winfo_width()+10)+"x"+str(w.winfo_height()+10))
w=Tkinter.Tk()
l1=Tkinter.Label(w, width=20, borderwidth=2, relief="solid", text=' ')
l2=Tkinter.Label(w, width=20, borderwidth=2, relief="solid", text=' ')
c=Tkinter.Button(w, text="clik", command=func1)
c2=Tkinter.Button(w, text="clik2", command=func2)
l1.grid(row=1, column=0)
l2.grid(row=1, column=1)
c.grid(row=0, column=1)
c2.grid(row=2, column=1)
w.columnconfigure(0, weight=1)
w.columnconfigure(1, weight=1)
w.mainloop()
如果先点击c
按钮后l1
标签消失w
窗口会缩小。 但是,如果你第一次点击c2
按钮(明确指定一个新的值geometry
)大小将变得不变,并不再随着小部件的大小而变化(点击c1
不会改变基于其余小部件的窗口大小)。