使根窗口可伸縮(tkinter,Python3.x)

使根窗口可伸縮

讓用戶可以放大縮小整個應用窗口,並將多餘的空間分配給內部的插件。這需要一些操作。

爲了讓應用的插件可伸縮,需要用到行列尺寸管理的技術,詳細參見 設置行,列尺寸

對於 最小的應用 中的應用,它只包含了一個 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
  1. ‘’top level window‘’是屏幕中最外層的窗口。但是,這個窗口不是你應用的窗口。調用任何插件的 .winfo_toplevel() 函數,可以達到 top-level 窗口。
  2. 這一行代碼可以使,top level 窗口的第0行網格可伸縮。
  3. 這一行代碼可以使,top level 窗口的第0列網格可伸縮。
  4. 這一行代碼可以使,應用中第0行中插件的網格可伸縮。
  5. 這一行代碼可以使,應用中第0列種插件的網格可伸縮。
  6. 通過設置參數 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 窗口的網格。

運行結果:

root_resize
注:本文翻譯自新墨西哥理工大學計算機中心

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章