1. 程式人生 > 程式設計 >Python Tkinter圖形工具使用方法及例項解析

Python Tkinter圖形工具使用方法及例項解析

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()                  # 啟動總面板的訊息迴圈(大致意思瞭解為啟動這個面板)

Python Tkinter圖形工具使用方法及例項解析

案例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()

執行結果如下:

Python Tkinter圖形工具使用方法及例項解析

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()

執行結果如下:

Python Tkinter圖形工具使用方法及例項解析

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()

執行結果如下:

Python Tkinter圖形工具使用方法及例項解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。