Tkinter模塊:Grid幾何管理器
阿新 • • 發佈:2018-09-14
高級 gui 來看 color code 就是 使用方法 class 源代碼
kinter模塊是Python的標準庫模塊之一,也是使用Python語言進行圖形化用戶界面(GUI)開發的基礎。
本文介紹一下Tkinter模塊的Grid幾何管理器。
使用VB、MFC進行GUI開發是所見即所得的,即你可以把控件拖入界面中,隨意放置、隨意伸縮之後,界面變成什麽樣子,程序執行時生成的界面還是這個樣子,非常方便。Python不一樣,界面以及界面中的組件都需要你在源代碼中生成,界面和組件的外觀、大小都需要你使用代碼進行設置。相比之下,使用Python進行GUI開發不是很方便,但這通常不是什麽難事,Python語言的簡潔性保證了GUI開發的高效和嚴格。
當界面中的組件多起來之後,我們就需要對這些組件進行布局。Tkinter模塊有三種高級布局管理方法:其一是Place幾何管理器,其二是Packer幾何管理器,其三是Grid幾何管理器。Tkinter模塊的幾何管理器是通過在父容器組件(通常是Frame或頂層窗口)內布局子組件來工作的。當我們要求一個組件將自己填充(pack)或網格化(grid)時,實際上是要求它的父組件將它布局在其他子組件中。通過pack,我們可以提供約束或邊,讓幾何管理器恰如其分地布局好組件;通過grid,我們將組件放置在父容器的行和列中,仿佛父容器組件就是一張表格。另外要註意:pack和grid對於相同的父容器組件來說,它們是互斥的。即在給定的父容器中,我們要麽用pack來布置組件,要麽用grid來布置組件,但無法對同一個組件同時使用二者。
- Packer幾何管理器適合在父容器組件的垂直方向上進行布局,其參數較少,使用簡單方便。
- Grid幾何管理器適合在父容器組件的水平、垂直方向上進行布局,適用於組件較多或需水平放置多個組件的情況。
Grid幾何管理器的使用方法為:
widget.grid(**kw)
組件的布局效果取決於grid方法的關鍵字參數,來看一下這些關鍵字參數:
# 將組件放置在x行,y列的位置 widget.grid(row=x, column=y)
下面是一個示例:
1 import tkinter 2 from tkinter.constants import * 3 4 tk = tkinter.Tk()5 6 frame = tkinter.Frame(tk, relief=RIDGE, bg=‘blue‘, borderwidth=2) 7 frame.pack(fill=BOTH, expand=1) 8 9 button1 = tkinter.Button(frame, text="button 1") 10 button1.grid(row=0, column=0) 11 12 button2 = tkinter.Button(frame, text="button 2") 13 button2.grid(row=1, column=1) 14 15 button3 = tkinter.Button(frame, text="button 3") 16 button3.grid(row=2, column=2) 17 18 tk.mainloop()
其運行效果如下:
將剩下的參數全部列出:
# 設置單元格在垂直方向上跨越的行數 widget.grid(rowspan=n) # 設置單元格在水平方向上跨越的列數 widget.grid(columnspan=n) # 設置組件裏面水平方向上空白區域的大小 widget.grid(ipadx=value) # 設置組件裏面垂直方向上空白區域的大小 widget.grid(ipady=value) # 設置組件外面水平方向上空白區域的大小 widget.grid(padx=value) # 設置組件外面垂直方向上空白區域的大小 widget.grid(pady=value) # 組件在單元格中的默認對齊方式是居中,可使用sticky關鍵字進行修改 # 組件與單元格的頂端對齊 widget.grid(sticky=N) # 組件與單元格的底端對齊 widget.grid(sticky=S) # 組件與單元格的右端對齊 widget.grid(sticky=E) # 組件與單元格的左端對齊 widget.grid(sticky=W) # 拉伸組件的高度,使其與單元格的頂端和底端都對齊 widget.grid(sticky=N+S) # 拉伸組件的寬度,使其與單元格的左端和右端都對齊 widget.grid(sticky=E+W) # 拉伸組件的高度,使其與單元格的頂端和底端都對齊,並將組件放置在單元格的右端 widget.grid(sticky=N+S+E) # 其他對齊方式
Tkinter模塊:Grid幾何管理器