Tkinter參考中最推薦使用的一個佈局器。實現機制是將Widget邏輯上分割成表格,在指定的位置放置想要的Widget就可以了。
使用grid顯示窗體的主要流程:
self.thing = constructor(parent,……)#constructor可以爲Button,Frame等
self.thing.grid(……)
grid方法介紹:
w.grid(option=value,……)
向窗體註冊並顯示控件
主要參數:
column: 控件放置位置的列數,從0開始算起,默認爲0;
clomnspan: 設置單元格橫向跨越的列數,例如:w.grid(row=0, column = 2, columnspan=3);
in_:重新設置w爲窗體w2的子窗體,方法:in_=w2.w2必須是w的父窗體子類;
ipadx:設置控件裏面x方向空白區域大小;
ipady:設置控件裏面y方向空白區域大小;
padx:設置控件周圍x方向空白區域保留大小;
pady:設置控件周圍y方向空白區域保留大小;
row:控制放置的行數,從0開始算起,默認爲上一個位佔領的行數
rowspan:設置單元格縱向跨越的列數,例如:w.grid(row=0, column = 2,rowspan=4, columnspan=5);
sticky:設置對齊方式
如果未設置對齊方式,默認爲將控件放置在窗體中間。對齊方式主要有如下幾種:
1) 通過使用sticky=NE(右上角),SE(右下角),SW(左下角),NW(左上角)來設置控件位置
2) 通過使用sticky=N(上中),E(右中),S(底中),W(左中)來設置控件放置中間位置
3) sticky=N+S,向垂直方向拉昇而保持水平中間對齊
4) sticky=E+W,向水平方向拉昇而保持垂直中間對齊
5) sticky=N+E+S+W,以水平方向和垂直方向拉昇的方式填充單元格
- #!/usr/bin/python
- #Filename: button.py
- # -*- coding: utf-8 -*-
- from Tkinter import *
- class Application(Frame):
- def say_hi(self):
- print "hi there, everyone!"
- def say_bitmap(self):
- print "bitmap show"
- def createWidgets(self):
- self.hi_there = Button(self)
- self.hi_there["text"] = "Hello", #設置按鈕上的顯示字符
- self.hi_there["command"] = self.say_hi #設置按鈕按下時的回調函數
- self.hi_there["bg"] = "red" #設置背景顏色
- self.hi_there["fg"] = "yellow" #設置顯示的字體顏色
- self.hi_there["activebackground"] = "green" #設置按鈕被按下時的背景顏色
- self.hi_there["activeforeground"] = "black" #設置按鈕被按下時的字體顏色
- self.hi_there["bd"] = "5" #設置按鈕邊框像素,默認爲2個像素
- self.hi_there["cursor"] = "hand1" #設置鼠標放置在按鈕上的形狀
- self.hi_there["padx"] = 100; #設置按鈕橫向的空白長度
- self.hi_there["pady"] = 100; #設置按鈕縱向的空白長度
- self.hi_there["underline"] = 1; #設置顯示字體的下劃線在哪個字符下面
- self.hi_there.grid(row = 0, column = 0)
- self.Bitmap = Button(self)
- self.Bitmap["text"] = "Bitmap"
- self.Bitmap["command"] = self.say_bitmap
- self.Bitmap["bitmap"] = "question"
- self.Bitmap.grid(row=1, column=0)
- self.QUIT = Button(self)
- self.QUIT["text"] = "QUIT"
- self.QUIT["fg"] = "red"
- self.QUIT["command"] = self.quit
- self.QUIT.grid(row=2, column=0)
- def __init__(self, master=None):
- Frame.__init__(self, master)
- self.pack()
- self.createWidgets()
- root = Tk()
- app = Application(master=root)
- app.mainloop()
- root.destroy()