Python Tkinter圖形工具使用方法及實(shí)例解析
Tkinter 常用組件
按鈕
- Button 按鈕組件
- RadioButton 單選框組件
- CheckButton 選擇按鈕組件
- Listbox 列表框組件
文本輸組件
- Entry 單行文本框組件
- Text 多行文本框組件
標(biāo)簽組件
- Label 標(biāo)簽組件,可以顯示圖片和文字
- Message 標(biāo)簽組件, 可以根據(jù)內(nèi)容將文字換行
菜單
- Menu 菜單組件
- MenuButton 菜單按鈕組件,可以實(shí)用Menu代替
滾動(dòng)條
- Scale 滑動(dòng)組件
- Scrollbar 滾動(dòng)條組件
其他組件 Canvas 畫布組件
- Frame 框架組件,將多個(gè)組件編組
- Toplevel 創(chuàng)建子窗口容器組件
組件的大致實(shí)用步驟創(chuàng)建總面板創(chuàng)建面板上各種組件
1.指定組件的父組件,即依附關(guān)系
2.利用相應(yīng)的屬性對(duì)組件進(jìn)行設(shè)置
3.給組件安排布局最后啟動(dòng)總面板的消息循環(huán)組件布局
控制組件的擺放方式
三種布局:
- pack: 按照方位布局
- place: 按照坐標(biāo)布局
- grid: 網(wǎng)格布局
pack布局
- 最簡(jiǎn)單,代碼量最少,挨個(gè)擺放,默認(rèn)從上到下,系統(tǒng)自動(dòng)設(shè)置
- 通用實(shí)用方式為:組件對(duì)象.pack(設(shè)置......)
- side:??糠轿?,可選值為L(zhǎng)EFT,TOP,RIGHT,BOTTOM
- fill:填充方式,x,y,BOTH,NONE
- expande:YES/NO 擴(kuò)充
- anchor:N,E,S,W,CENTER
- ipadx:x方向的內(nèi)邊距
- ipady:y
- padx:x的外方向邊界
- pady:y
grid布局
- 通用使用方式:組件對(duì)象.grid(設(shè)置......)
- 利用row,cblumn編號(hào),都是從0開(kāi)始
- sticky:N,E,S,W表示上下左右,用來(lái)決定組件從哪個(gè)方向開(kāi)始
- 支持ipadx,padx等參數(shù),跟pack函數(shù)一樣
- 支持rowspan,columnspan,代表跨行,跨列數(shù)列
place布局:
- 明確方位的擺放
- 相對(duì)位置布局,隨意改變窗口大小會(huì)導(dǎo)致混亂
- 使用place函數(shù),分為絕對(duì)布局和相對(duì)布局,絕對(duì)布局使用X,Y參數(shù)
- 相對(duì)布局使用relx,rely,relheight,relwidth
案例1:創(chuàng)建一個(gè)自己定義的彈窗、并且里面有文字內(nèi)容
執(zhí)行完成就會(huì)彈出一個(gè)白色定義好的小方框,里面的內(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() # 啟動(dòng)總面板的消息循環(huán)(大致意思了解為啟動(dòng)這個(gè)面板)

案例2:Button案例,創(chuàng)建一個(gè)彈窗,里面生成一個(gè)按鈕,當(dāng)按鈕被按下去的時(shí)候,執(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="點(diǎn)擊我、就會(huì)執(zhí)行函數(shù)", command=showlabel) # command為指定要執(zhí)行的函數(shù),不填默認(rèn)不執(zhí)行 btn.pack() baseFrame.mainloop()
執(zhí)行結(jié)果如下:

pack布局
- 最簡(jiǎn)單,代碼量最少,挨個(gè)擺放,默認(rèn)從上到下,系統(tǒng)自動(dòng)設(shè)置
- 通用實(shí)用方式為:組件對(duì)象.pack(設(shè)置......)
- side:??糠轿?,可選值為L(zhǎng)EFT,TOP,RIGHT,BOTTOM
- fill:填充方式,x,y,BOTH,NONE
- expande:YES/NO 擴(kuò)充
- 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)建一個(gè)組件,然后布局 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布局
- 通用使用方式:組件對(duì)象.grid(設(shè)置......)
- 利用row,cblumn編號(hào),都是從0開(kāi)始
- sticky:N,E,S,W表示上下左右,用來(lái)決定組件從哪個(gè)方向開(kāi)始
- 支持ipadx,padx等參數(shù),跟pack函數(shù)一樣
- 支持rowspan,columnspan,代表跨行,跨列數(shù)列
案例3:grid布局案例
import tkinter def button1(): # 函數(shù)內(nèi)所有代碼都是創(chuàng)建一個(gè)組件,然后布局 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é)果如下:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用Python實(shí)現(xiàn)讀取Word表格計(jì)算匯總并寫入Excel
這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)讀取Word表格計(jì)算匯總并寫入Excel的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01
Django-Xadmin后臺(tái)首頁(yè)添加小組件報(bào)錯(cuò)的解決方案
這篇文章主要介紹了Django-Xadmin后臺(tái)首頁(yè)添加小組件報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
win10環(huán)境下配置vscode python開(kāi)發(fā)環(huán)境的教程詳解
這篇文章主要介紹了win10環(huán)境下配置python開(kāi)發(fā)環(huán)境(vscode)的教程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10
總結(jié)Python變量的相關(guān)知識(shí)
今天給大家?guī)?lái)的是關(guān)于Python基礎(chǔ)的相關(guān)知識(shí),文章圍繞著Python變量的相關(guān)知識(shí)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Django關(guān)于admin的使用技巧和知識(shí)點(diǎn)
在本篇文章里小編給大家整理的是關(guān)于Django的admin簡(jiǎn)單使用的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以跟著學(xué)習(xí)下。2020-02-02
源碼解析python中randint函數(shù)的效率缺陷
這篇文章主要介紹了源碼解析python中randint函數(shù)的效率缺陷,通過(guò)討論?random?模塊的實(shí)現(xiàn),并討論了一些更為快速的生成偽隨機(jī)整數(shù)的替代方法展開(kāi)主題,需要的盆友可以參考一下2022-06-06
Python如何讀取16進(jìn)制byte數(shù)據(jù)
這篇文章主要介紹了Python如何讀取16進(jìn)制byte數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05

