2017-07-19 125 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("") 
    ... 
相關問題