Python Tkinter圖形工具使用方法及例項解析
阿新 • • 發佈:2020-06-16
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,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,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,fill=tkinter.BOTH) btn3 = tkinter.Button(baseFreame,text='C') btn3.pack(side=tkinter.RIGHT,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,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,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,sticky=tkinter.E) btn2 = tkinter.Button(baseFreame,text='登陸') btn2.grid(row=2,sticky=tkinter.W) if __name__ == '__main__': baseFreame = tkinter.Tk() button1() baseFreame.mainloop()
執行結果如下:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。