Tkinter 常用組件
按鈕
Button 按鈕組件
RadioButton 單選框組件
CheckButton 選擇按鈕組件
Listbox 列表框組件
文本輸組件
Entry 單行文本框組件
Text 多行文本框組件
標籤組件
Label 標籤組件,可以顯示圖片和文字
Message 標籤組件, 可以根據內容將文字換行
菜單
Menu 菜單組件
MenuButton 菜單按鈕組件,可以實用Menu代替
滾動條
Scale 滑動組件
Scrollbar 滾動條組件
其他組件 Canvas 畫布組件
Frame 框架組件,將多個組件編組
Toplevel 創建子窗口容器組件
組件的大致實用步驟創建總面板創建面板上各種組件
1.指定組件的父組件,即依附關係
2.利用相應的屬性對組件進行設置
3.給組件安排佈局最後啟動總面板的消息循環組件佈局
控制組件的擺放方式
三種佈局:
pack: 按照方位佈局
place: 按照座標佈局
grid: 網格佈局
pack佈局
最簡單,代碼量最少,挨個擺放,默認從上到下,系統自動設置
通用實用方式為:組件對象.pack(設置......)
side:停靠方位,可選值為LEFT,TOP,RIGHT,BOTTOM
fill:填充方式,x,y,BOTH,NONE
expande:YES/NO 擴充
anchor:N,E,S,W,CENTER
ipadx:x方向的內邊距
ipady:y
padx:x的外方向邊界
pady:y
grid佈局
通用使用方式:組件對象.grid(設置......)
利用row,cblumn編號,都是從0開始
sticky:N,E,S,W表示上下左右,用來決定組件從哪個方向開始
支持ipadx,padx等參數,跟pack函數一樣
支持rowspan,columnspan,代表跨行,跨列數列
place佈局:
明確方位的擺放
相對位置佈局,隨意改變窗口大小會導致混亂
使用place函數,分為絕對佈局和相對佈局,絕對佈局使用X,Y參數
相對佈局使用relx,rely,relheight,relwidth
案例1:創建一個自己定義的彈窗、並且裡面有文字內容
執行完成就會彈出一個白色定義好的小方框,裡面的內容就是你定義的
import tkinter base = tkinter.Tk() # 創建總面板 # 負責標題 base.wm_title("Label Test") # 創建面板的標題 lb = tkinter.Label(base, text="Pyhton Label") # 創建一些內容,把創建的內容指定給我之前創建好的名為base的面板,Pyhton Label為面板的內容 # 給相應組件指定佈局 lb.pack() # 給相應組件指定佈局 base.mainloop() # 啟動總面板的消息循環(大致意思瞭解為啟動這個面板)
案例2:Button案例,創建一個彈窗,裡面生成一個按鈕,當按鈕被按下去的時候,執行我定義的函數
import tkinter def showlabel(): global baseFrame # 調用全局變量,baseFrame,也可以把baseFrame = tkinter.Tk() 放到函數上面 lb = tkinter.Label(baseFrame, text="我是函數裡面的內容") lb.pack() if __name__ == '__main__': baseFrame = tkinter.Tk () btn = tkinter.Button(baseFrame, text="點擊我、就會執行函數", command=showlabel) # command為指定要執行的函數,不填默認不執行 btn.pack() baseFrame.mainloop()
執行結果如下:
pack佈局
最簡單,代碼量最少,挨個擺放,默認從上到下,系統自動設置
通用實用方式為:組件對象.pack(設置......)
side:停靠方位,可選值為LEFT,TOP,RIGHT,BOTTOM
fill:填充方式,x,y,BOTH,NONE
expande:YES/NO 擴充
anchor:N,E,S,W,CENTER
ipadx:x方向的內邊距
ipady:y
padx:x的外方向邊界
pady:y
案例3:pack 佈局案例
# pack 佈局案例 import tkinter def button1(): # 函數內所有代碼都是創建一個組件,然後佈局 global baseFreame btn1 = tkinter.Button(baseFreame, text='A') btn1.pack(side=tkinter.LEFT, expand=tkinter.YES, fill=tkinter.Y) btn2 = tkinter.Button(baseFreame, text='B') btn2.pack(side=tkinter.TOP, expand=tkinter.YES, fill=tkinter.BOTH) btn3 = tkinter.Button(baseFreame, text='C') btn3.pack(side=tkinter.RIGHT, expand=tkinter.YES, fill=tkinter.NONE, anchor=tkinter.NE) btn4 = tkinter.Button(baseFreame, text='D') btn4.pack(side=tkinter.LEFT, expand=tkinter.NO, fill=tkinter.Y) btn5 = tkinter.Button(baseFreame, text='E') btn5.pack(side=tkinter.TOP, expand=tkinter.NO, fill=tkinter.BOTH) btn6 = tkinter.Button(baseFreame, text='F') btn6.pack(side=tkinter.BOTTOM, expand=tkinter.YES) btn7 = tkinter.Button(baseFreame, text='G') btn7.pack(anchor=tkinter.SE) if __name__ == '__main__': baseFreame = tkinter.Tk() button1 () baseFreame.mainloop()
執行結果如下:
grid佈局
通用使用方式:組件對象.grid(設置......)
利用row,cblumn編號,都是從0開始
sticky:N,E,S,W表示上下左右,用來決定組件從哪個方向開始
支持ipadx,padx等參數,跟pack函數一樣
支持rowspan,columnspan,代表跨行,跨列數列
案例3:grid佈局案例
import tkinter def button1(): # 函數內所有代碼都是創建一個組件,然後佈局 global baseFreame btn1 = tkinter.Label(baseFreame, text='賬戶:') btn1.grid(row=0, sticky=tkinter.W) en = tkinter.Entry(baseFreame) en.grid(row=0, column=1, sticky=tkinter.E) btn2 = tkinter.Label(baseFreame, text='密碼:') btn2.grid(row=1, sticky=tkinter.W) en2 = tkinter.Entry(baseFreame) en2.grid(row=1, column=1, sticky=tkinter.E) btn2 = tkinter.Button(baseFreame, text='登陸') btn2.grid(row=2, column=1, sticky=tkinter.W) if __name__ == '__main__': baseFreame = tkinter.Tk() button1() baseFreame.mainloop()
執行結果如下:
[hongdian2012 ] Python Tkinter圖形工具使用方法及實例解析已經有364次圍觀