使根視窗可伸縮(tkinter,Python3.x)
阿新 • • 發佈:2018-12-23
使根視窗可伸縮
讓使用者可以放大縮小整個應用視窗,並將多餘的空間分配給內部的外掛。這需要一些操作。
為了讓應用的外掛可伸縮,需要用到行列尺寸管理的技術,詳細參見 設定行,列尺寸 。
對於 最小的應用 中的應用,它只包含了一個 Quit 外掛,如果執行這個應用,調整視窗的大小,按鈕不會改變大小,一直保持在視窗的中央。
使用以下程式碼代替 最小的應用 中的 .createWidgets()
方法。這樣, Quit 按鈕就會始終填充整個視窗。
def createWidgets(self): top=self.winfo_toplevel()#1 top.rowconfigure(0, weight=1)#2 top.columnconfigure(0, weight=1)#3 self.rowconfigure(0, weight=1)#4 self.columnconfigure(0, weight=1)#5 self.quit = Button(self, text='Quit', command=self.quit) self.quit.grid(row=0, column=0, sticky=tk.N+tk.S+tk.E+tk.W)#6
- ‘’top level window‘’是螢幕中最外層的視窗。但是,這個視窗不是你應用的視窗。呼叫任何外掛的
.winfo_toplevel()
函式,可以達到 top-level 視窗。 - 這一行程式碼可以使,top level 視窗的第0行網格可伸縮。
- 這一行程式碼可以使,top level 視窗的第0列網格可伸縮。
- 這一行程式碼可以使,應用中第0行中外掛的網格可伸縮。
- 這一行程式碼可以使,應用中第0列種外掛的網格可伸縮。
- 通過設定引數
sticky=tk.N+tk.S+tk.E+tk.W
允許按鈕通過伸縮來填充網格中的 cell 。
還需要改變一個地方。在建構函式 __init__()
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid(sticky=tk.N+tk.S+tk.E+tk.W)
self.createWidgets()
必須設定 self.grid()
函式中的 sticky=tk.N+tk.S+tk.E+tk.W
,這樣才會伸縮應用中的外掛,填充 top-level 視窗的網格。
執行結果: