1.簡介
Tkinter
是 Python 的標準 GUI 庫沥阳。Python 使用 Tkinter 可以快速的創(chuàng)建 GUI 應(yīng)用程序跨琳。
由于 Tkinter 是內(nèi)置到 python 的安裝包中、只要安裝好 Python 之后就能 import Tkinter 庫桐罕、而且 IDLE 也是用 Tkinter 編寫而成脉让、對于簡單的圖形界面 Tkinter 還是能應(yīng)付自如
2.常用控件
Label
(標簽,就是界面上顯示的字)Entry
(輸入框)Button
(按鈕功炮,可以綁定各種封裝函數(shù))Radiobutton
(單選框)Checkbuttion
(復(fù)選框)messagebox
(消息彈出框)Text
(文本編輯框)Listbox
(列表控件)Scrollbar
(滾條控件)
3.控件參數(shù)
- title:設(shè)置窗口的標題
參數(shù) | 描述 | 實例 |
---|---|---|
title | 窗口標題 | tk.TK().title("xxx") |
geometry | 設(shè)置窗口大小溅潜,中間不能是*,而是x | tk.TK().geometry("100X100") |
resizable | 設(shè)置窗口是否可以變化高(height)薪伏、 寬(width)滚澜,True為可以變化,F(xiàn)alse為不可變化 | tk.TK().resizable("width=False, height=True") |
- Label:標簽
參數(shù) | 描述 | 實例 |
---|---|---|
text | 需要在界面顯示的Label標簽內(nèi)容 | Label(root,text=‘xxxxx’) |
height | 組件的高度(所占行數(shù)) | Label(root,text=‘xxxxx’嫁怀,height=2) |
width | 組件的寬度(所占字符個數(shù)) | Label(root,text=‘xxxxx’设捐,height=2,width=20) |
fg | 前景字體顏色 | Label(root,text=‘xxxxx’眶掌,fg='blue')---顯示字體為藍色 |
bg | 背景字體顏色 | Label(root,text=‘xxxxx’挡育,bg='blue')---顯示字體為藍色 |
justify | 多行文本的對齊方式,可選參數(shù)為: LEFT朴爬、 CENTER、RIGHT橡淆,分別是向左召噩、居中、向右對齊 | Label(root,text=‘xxxxx’逸爵,justify=tk.LEFT) |
padx | 文本左右兩側(cè)的空格數(shù)(默認為1) | Label(root,text=‘xxxxx’具滴,padx=5) |
pady | 文本上下的空格數(shù)(默認為1) | Label(root,text=‘xxxxx’,pady=5) |
font | 字體格式和大小 | Label(Label(root,text=‘xxxxx’师倔,font=("微軟雅黑", 12)) |
photo | 設(shè)置背景圖片构韵,事先需要指定圖片路徑 | photo=tk.PhotoImage(file='指定圖片路徑')Label(root,text=‘xxxxx’,image=photo) |
compound | 圖像背景圖位置,可選參數(shù)為:botton疲恢、top凶朗、right、left显拳、center(下棚愤、上、右杂数、左宛畦、文字覆蓋圖像) | photo=tk.PhotoImage(file='指定圖片路徑')Label(root,text=‘xxxxx’,image=photo,compound=tk.center) |
- Button:按鈕
參數(shù) | 描述 | 實例 |
---|---|---|
text | 按鈕圖標顯示內(nèi)容 | Button(root,text='xxxx') |
height | 組件的高度(所占行數(shù)) | Button(root,text='xxxx',height=2) |
width | 組件的寬度(所占字符個數(shù)) | Button(root,text='xxxx',height=2,width=10) |
fg | 前景字體顏色 | Button(text='xxxx',fg='blue')---顯示按鈕字體顏色為藍色 |
bg | 背景字體顏色 | Button(text='xxxx',bg='blue')---顯示按鈕字體顏色為藍色 |
activebackground | 按鈕按下時的背景顏色 | Button(root,text='xxxx',activebackground='grey') |
activeforeground | 按鈕按下時的前景字體顏色 | Button(root,text='xxxx',activeforeground='black') |
justify | 多行文本的對齊方式揍移,可選參數(shù)為: LEFT次和、 CENTER、RIGHT那伐,分別是向左踏施、居中、向右對齊 | Button(root,text=‘xxxxx’喧锦,justify=tk.LEFT) |
padx | 文本左右兩側(cè)的空格數(shù)(默認為1) | Button(root,text=‘xxxxx’读规,padx=5) |
pady | 文本上下的空格數(shù)(默認為1) | Button(root,text=‘xxxxx’,pady=5) |
command | 按鈕觸發(fā)執(zhí)行的命令(函數(shù)) | Button(root,text='xxxx',command=函數(shù)) |
- Entry:輸入框
參數(shù) | 描述 | 實例 |
---|---|---|
width | 組件的寬度(所占字符個數(shù)) | Entry(root,width=20) |
fg | 前景字體顏色 | Entry(root,fg='blue') |
bg | 背景字體顏色 | Entry(root,bg='blue') |
show | 將Entry框中的文本替換為指定字符燃少,用于輸入密碼等束亏,如設(shè)置 show="*" | Entry(root,show="*") |
state | 設(shè)置組件狀態(tài),默認為normal阵具,可設(shè)置為:disabled—禁用組件碍遍,readonly—只讀 | Entry(root,state=readonly) |
textvariable | 指定變量,需要事先定義一個變量阳液,在Entry進行綁定獲取變量的值 | text=tk.StringVar() Entry(root,textvariable=text) |
- Radiobutton:單選框
參數(shù) | 描述 | 實例 |
---|---|---|
text | 單選框文本顯示內(nèi)容 | Radiobutton(root,text='xxxx') |
variable | 單選框索引變量怕敬,通過變量的值確定哪個單選框被選中。一組單選框使用同一個索引變量帘皿,需要事先設(shè)定一個變量 | color=tk.StringVar() Radiobutton(root,variable=color) |
value | 單選框選中時設(shè)定變量的值 | color=tk.StringVar()Radiobutton(root,variable=color,value='red' |
command | 單選框選中時執(zhí)行的命令(函數(shù)) | color=tk.StringVar()Radiobutton(root,variable=color,value='red',command=函數(shù)) |
- Checkbuttion:復(fù)選框
參數(shù) | 描述 | 實例 |
---|---|---|
text | 復(fù)選框顯示的文本 | Checkbutton(root,text='xxxx') |
variable | 復(fù)選框索引變量东跪,通過變量的值確定哪些復(fù)選框被選中。每個復(fù)選框使用不同的變量鹰溜,使復(fù)選框之間相互獨立虽填,事先需要定義不同的變量 | typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod) |
onvalue | 復(fù)選框選中(有效)時變量的值,可以通過計算值來判斷分支不同的效果曹动,計算值由自己設(shè)定 | typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1) |
offvalue | 復(fù)選框未選中(無效)時變量的值斋日,可以通過計算值來判斷分支不同的效果,一般設(shè)置為0 | typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1,offvalue=0) |
command | 復(fù)選框選中時執(zhí)行的命令(函數(shù)) | typeBlod=tk.IntVar()Checkbutton(root,variable=typeBlod,onvalue=1,offvalue=0墓陈,command=函數(shù)) |
- Text:文本框
參數(shù) | 描述 | 實例 | 備注 |
---|---|---|---|
t.insert(mark, 內(nèi)容) | 插入文本信息恶守,mark可以是行號,或者特殊標識 | t=tk.Text()t.insert(END,'插入的文本信息') | INSERT:光標 的插入點第献, CURRENT:鼠標的當(dāng)前位置所對應(yīng)的字符 ,END:Textbuffer的最后一個字符兔港,SEL_FIRST:選中文本域的第一個字符庸毫,如果沒有選中區(qū)域則會引發(fā)異常,SEL_LAST:選中文本域的最后一個字符押框,如果沒有選中區(qū)域則會引發(fā)異常 |
t.delete(mark1, mark2) | 刪除文本信息 | INSERT:光標的插入點岔绸, CURRENT:鼠標的當(dāng)前位置所對應(yīng)的字符 ,END:Textbuffer的最后一個字符橡伞,SEL_FIRST:選中文本域的第一個字符盒揉,如果沒有選中區(qū)域則會引發(fā)異常,SEL_LAST:選中文本域的最后一個字符兑徘,如果沒有選中區(qū)域則會引發(fā)異常 |
- ListBox:列表控件
參數(shù) | 描述 |
---|---|
master | 代表了父窗口 |
bg | 背景色刚盈,如bg=”red”, bg="#FF56EF" |
fg | 前景色挂脑,如fg=”red”藕漱, fg="#FF56EF" |
height | 設(shè)置顯示高度、如果未設(shè)置此項崭闲,其大小以適應(yīng)內(nèi)容標簽 |
width | 設(shè)置顯示寬度肋联,如果未設(shè)置此項,其大小以適應(yīng)內(nèi)容標簽 |
status | 設(shè)置組件狀態(tài);正常(normal),激活(active),禁用(disabled) |
bd | 設(shè)置Button的邊框大小;bd(bordwidth)缺省為1或2個像素 |
selectmode | 選擇模式刁俭,MULTIPLE:多選 BROWSE:通過鼠標的移動選擇 EXTENDED:shift和ctrl配合使用 |
listvariable | 設(shè)置listvariable屬性 |
relief | 指定外觀裝飾邊界附近的標簽,默認是平的,可以設(shè)置的參數(shù):flat橄仍、groove、raised牍戚、ridge侮繁、solid、sunken |
常用函數(shù)
函數(shù) | 描述 |
---|---|
insert | 追加item如孝,如listbox.insert(0,"addBox1","addBox2") |
delete | 刪除item宪哩,如listbox.delete(3,4),刪除全部(0,END) |
select_set | 選中第晰,如listbox.select_set(0,2) |
select_clear | 取消選中如listbox.select_clear(0,1) |
get | 返回制定索引的項值锁孟,如listbox.get(1);返回多個項值,返回元組茁瘦,如listbox.get(0,2)罗岖;返回當(dāng)前選中項的索引listbox.curselection() |
curselection() | 返回當(dāng)前選中項的索引,如listbox.curselection() |
selection_includes | 判斷當(dāng)前選中的項目中是否包含某項腹躁,如listbox.selection_includes(4) |
消息彈出框
屬性 | 描述 | 舉例 |
---|---|---|
showinfo | info信息提示,彈出提示框 | msgbox.showinfo("INFO","Showinfo test")南蓬,INFO是提示框title纺非,Showinfo test是提示框內(nèi)容 |
showwarning | warning警告信息提示哑了,彈出警告框 | 框 msgbox.showwarning("WARNING","Warning test"),WARNING是警告框title烧颖,Warning test是警告框內(nèi)容 |
showerrot | error錯誤信息提示弱左,彈出錯誤框 | msgbox.showerror("ERROR","Error test"),ERROR是錯誤框title炕淮,Error test是錯誤框內(nèi)容 |
askquestion | 提問窗口提示 | msgbox.askquestion("Question","Askquestion test") |
askokcancel | 確定與取消窗口提示 | msgbox.askokcancel("OkCancel","Askokcancel test") |
askretrycancel | 確定與取消窗口提示 | msgbox.askretrycancel("Retry","Askretrycancel test") |
askretrycancel | 重試與取消窗口提示 | msgbox.askretrycancel("Retry","Askretrycancel test") |
4.構(gòu)建框架
-
frame:
內(nèi)嵌框架拆火,可以在一個圖形界面中設(shè)定多個frame框架,也可以在frame再次嵌套frame
frame=tk.Frame(父類框架)
frame.pack()
- pack屬性:
屬性 | 描述 | 備注 | 其他 |
---|---|---|---|
fill | 設(shè)置組件是否向水平或垂直方向填充涂圆,包含X们镜、Y、BOTH润歉、NONE | fill = X(水平方向填充) fill = Y(垂直方向填充)fill = BOTH(水平和垂直)NONE 不填充 | |
expand | 設(shè)置組件是否展開模狭,當(dāng)值為YES時,side選項無效踩衩。組件顯示在父容器中心位置嚼鹉;若fill選項為BOTH,則填充父組件的剩余空間。它表示某個控件在fill那個方向驱富,要不要把空白的地方分配給它 | YES 锚赤、NO(1、0) | 若expand=True或者expand=1褐鸥,表示在fill那個方向线脚,把空白處都分給這個控件,讓它盡量占滿晶疼。若expand=False或者expand=0酒贬,表示在fill那個方向,有空也不給它翠霍。 |
side | 設(shè)置組件的對齊方式 | LEFT锭吨、TOP、RIGHT寒匙、BOTTOM | 值為左零如、上、右锄弱、下 |
ipadx考蕾、ipady | 設(shè)置x方向(或者y方向)內(nèi)部間隙(子組件之間的間隔),它表示某個控件的內(nèi)邊距会宪,即控件邊緣和這個控件內(nèi)容(文字圖片什么的)的間距 | 可設(shè)置數(shù)值肖卧,默認是0 | 非負整數(shù),單位為像素 |
padx掸鹅、pady | 設(shè)置x方向(或者y方向)外部間隙(與之并列的組件之間的間隔)塞帐,它表示某個控件的外邊距拦赠,即控件邊緣和這個控件所在容器之間的間距 | 可設(shè)置數(shù)值,默認是0 | 非負整數(shù)葵姥,單位為像素 |
anchor | 錨選項荷鼠,當(dāng)可用空間大于所需求的尺寸時,決定組件被放置于容器的何處榔幸,它表示某個控件在容器里的擺放方式允乐,是左還是右,是上還是下 | N削咆、E牍疏、S、W态辛、NW麸澜、NE、SW奏黑、SE炊邦、CENTER(默認值為CENTER) | 表示八個方向以及中心 |
- grid屬性:
屬性 | 描述 | 舉例 |
---|---|---|
row,column | 它表示某個控件要放在第幾行網(wǎng)格或第幾列網(wǎng)格,下標都是從0開始計的 | xxx.grid(column=1,row=1) |
rowspan熟史,columnspan | 它表示某個控件將會豎著跨幾行或橫著跨幾列馁害,默認都是1 | xxx.grid(column=1,row=1,columnspan=2)xxx.grid(column=1,row=1,rowspan=2) |
padx,pady | 它表示某個控件的外邊距,即控件邊緣和這個控件所在容器之間的間距蹂匹,單位是像素 | xxx.grid(column=1,row=1,padx=10)xxx.grid(column=1,row=1,pady=10) |
ipadx,ipady | 它表示某個控件的內(nèi)邊距碘菜,即控件邊緣和這個控件內(nèi)容(文字圖片什么的)的間距,單位是像素 | xxx.grid(column=1,row=1,ipadx=10)xxx.grid(column=1,row=1,ipady=10) |
sticky | 它表示某個控件在網(wǎng)格里的擺放方式限寞,是左還是右忍啸,是上還是下,即使窗口被拉大也會按照指定方向?qū)R | 若sticky=N履植,表示North计雌,盡可能往北面/上面停靠若sticky=S玫霎,表示South凿滤,盡可能往南面/下面停靠庶近。若sticky=W翁脆,表示W(wǎng)est,盡可能往西邊/左邊捅侵郑靠反番。若sticky=E,表示East,盡可能往東邊/右邊吞窨冢靠校读。若sticky=NS,表示NorthSouth祖能,盡可能往南北方向/上下拉伸。若sticky=EW蛾洛,表示EastWest养铸,盡可能往東西方向/左右拉伸。若sticky=CENTER轧膘,盡可能往中心统靠。 |