2017-07-19 130 views
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不会改变基于其余小部件的窗口大小)。

回答

1

您需要通过将空字符串传递给geometry方法来重置窗口几何。

实施例:

def func1(): 
    w.geometry("") 
    ... 
相关问题