Python Tkinter圖形工具使用方法及實例解析
Tkinter 常用組件
按鈕
- Button 按鈕組件
- RadioButton 單選框組件
- CheckButton 選擇按鈕組件
- Listbox 列表框組件
文本輸組件
- Entry 單行文本框組件
- Text 多行文本框組件
標(biāo)簽組件
- Label 標(biāo)簽組件,可以顯示圖片和文字
- Message 標(biāo)簽組件, 可以根據(jù)內(nèi)容將文字換行
菜單
- Menu 菜單組件
- MenuButton 菜單按鈕組件,可以實用Menu代替
滾動條
- Scale 滑動組件
- Scrollbar 滾動條組件
其他組件 Canvas 畫布組件
- Frame 框架組件,將多個組件編組
- Toplevel 創(chuàng)建子窗口容器組件
組件的大致實用步驟創(chuàng)建總面板創(chuàng)建面板上各種組件
1.指定組件的父組件,即依附關(guān)系
2.利用相應(yīng)的屬性對組件進(jìn)行設(shè)置
3.給組件安排布局最后啟動總面板的消息循環(huán)組件布局
控制組件的擺放方式
三種布局:
- pack: 按照方位布局
- place: 按照坐標(biāo)布局
- grid: 網(wǎng)格布局
pack布局
- 最簡單,代碼量最少,挨個擺放,默認(rèn)從上到下,系統(tǒng)自動設(shè)置
- 通用實用方式為:組件對象.pack(設(shè)置......)
- side:停靠方位,可選值為LEFT,TOP,RIGHT,BOTTOM
- fill:填充方式,x,y,BOTH,NONE
- expande:YES/NO 擴充
- anchor:N,E,S,W,CENTER
- ipadx:x方向的內(nèi)邊距
- ipady:y
- padx:x的外方向邊界
- pady:y
grid布局
- 通用使用方式:組件對象.grid(設(shè)置......)
- 利用row,cblumn編號,都是從0開始
- sticky:N,E,S,W表示上下左右,用來決定組件從哪個方向開始
- 支持ipadx,padx等參數(shù),跟pack函數(shù)一樣
- 支持rowspan,columnspan,代表跨行,跨列數(shù)列
place布局:
- 明確方位的擺放
- 相對位置布局,隨意改變窗口大小會導(dǎo)致混亂
- 使用place函數(shù),分為絕對布局和相對布局,絕對布局使用X,Y參數(shù)
- 相對布局使用relx,rely,relheight,relwidth
案例1:創(chuàng)建一個自己定義的彈窗、并且里面有文字內(nèi)容
執(zhí)行完成就會彈出一個白色定義好的小方框,里面的內(nèi)容就是你定義的
import tkinter base = tkinter.Tk() # 創(chuàng)建總面板 # 負(fù)責(zé)標(biāo)題 base.wm_title("Label Test") # 創(chuàng)建面板的標(biāo)題 lb = tkinter.Label(base, text="Pyhton Label") # 創(chuàng)建一些內(nèi)容,把創(chuàng)建的內(nèi)容指定給我之前創(chuàng)建好的名為base的面板,Pyhton Label為面板的內(nèi)容 # 給相應(yīng)組件指定布局 lb.pack() # 給相應(yīng)組件指定布局 base.mainloop() # 啟動總面板的消息循環(huán)(大致意思了解為啟動這個面板)
案例2:Button案例,創(chuàng)建一個彈窗,里面生成一個按鈕,當(dāng)按鈕被按下去的時候,執(zhí)行我定義的函數(shù)
import tkinter def showlabel(): global baseFrame # 調(diào)用全局變量,baseFrame,也可以把baseFrame = tkinter.Tk() 放到函數(shù)上面 lb = tkinter.Label(baseFrame, text="我是函數(shù)里面的內(nèi)容") lb.pack() if __name__ == '__main__': baseFrame = tkinter.Tk () btn = tkinter.Button(baseFrame, text="點擊我、就會執(zhí)行函數(shù)", command=showlabel) # command為指定要執(zhí)行的函數(shù),不填默認(rèn)不執(zhí)行 btn.pack() baseFrame.mainloop()
執(zhí)行結(jié)果如下:
pack布局
- 最簡單,代碼量最少,挨個擺放,默認(rèn)從上到下,系統(tǒng)自動設(shè)置
- 通用實用方式為:組件對象.pack(設(shè)置......)
- side:??糠轿?,可選值為LEFT,TOP,RIGHT,BOTTOM
- fill:填充方式,x,y,BOTH,NONE
- expande:YES/NO 擴充
- anchor:N,E,S,W,CENTER
- ipadx:x方向的內(nèi)邊距
- ipady:y
- padx:x的外方向邊界
- pady:y
案例3:pack 布局案例
# pack 布局案例 import tkinter def button1(): # 函數(shù)內(nèi)所有代碼都是創(chuàng)建一個組件,然后布局 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()
執(zhí)行結(jié)果如下:
grid布局
- 通用使用方式:組件對象.grid(設(shè)置......)
- 利用row,cblumn編號,都是從0開始
- sticky:N,E,S,W表示上下左右,用來決定組件從哪個方向開始
- 支持ipadx,padx等參數(shù),跟pack函數(shù)一樣
- 支持rowspan,columnspan,代表跨行,跨列數(shù)列
案例3:grid布局案例
import tkinter def button1(): # 函數(shù)內(nèi)所有代碼都是創(chuàng)建一個組件,然后布局 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()
執(zhí)行結(jié)果如下:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python 命令行傳入?yún)?shù)實現(xiàn)解析
這篇文章主要介紹了python 命令行傳入?yún)?shù)實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-08-08解決Django提交表單報錯:CSRF token missing or incorrect的問題
這篇文章主要介紹了解決Django提交表單報錯:CSRF token missing or incorrect的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03python sort、sorted高級排序技巧分享(key的使用)
這篇文章主要介紹了python sort、sorted高級排序技巧(key的使用),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03opencv+playwright滑動驗證碼的實現(xiàn)
滑動驗證碼是常見的驗證碼之一,本文主要介紹了opencv+playwright滑動驗證碼的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-11-11Python生成指定數(shù)量的優(yōu)惠碼實操內(nèi)容
在本篇文章里小編給大家整理了關(guān)于Python生成指定數(shù)量的優(yōu)惠碼的實例內(nèi)容以及相關(guān)代碼,有需要的朋友們學(xué)習(xí)下。2019-06-06