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
不會改變基於其餘小部件的窗口大小)。