1. 程式人生 > >Tkinter模塊:Grid幾何管理器

Tkinter模塊:Grid幾何管理器

高級 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幾何管理器