1.Button 按鈕。相似標籤,但提供額外的功能,例如鼠標掠過、按下、釋放以及鍵盤操做/事件數據庫
2.Canvas 畫布。提供繪圖功能(直線、橢圓、多邊形、矩形) ;能夠包含圖形或位圖canvas
3.Checkbutton 選擇按鈕。一組方框,能夠選擇其中的任意個(相似 HTML 中的 checkbox)app
4.Entry 文本框。單行文字域,用來收集鍵盤輸入(相似 HTML 中的 text)框架
5.Frame 框架。包含其餘組件的純容器編輯器
6.Label 標籤。用來顯示文字或圖片ide
7.Listbox 列表框。一個選項列表,用戶能夠從中選擇函數
8.Menu 菜單。點下菜單按鈕後彈出的一個選項列表,用戶能夠從中選擇工具
9.Menubutton 菜單按鈕。用來包含菜單的組件(有下拉式、層疊式等等)測試
10.Message 消息框。相似於標籤,但能夠顯示多行文本字體
11.Radiobutton 單選按鈕。一組按鈕,其中只有一個可被「按下」 (相似 HTML 中的 radio)
12.Scale 進度條。線性「滑塊」組件,可設定起始值和結束值,會顯示當前位置的精確值
13.Scrollbar 滾動條。對其支持的組件(文本域、畫布、列表框、文本框)提供滾動功能
14.Text 文本域。 多行文字區域,可用來收集(或顯示)用戶輸入的文字(相似 HTML 中的 textarea)
15.Toplevel 頂級。相似框架,但提供一個獨立的窗口容器。
Tkinter支持15個核心的窗口部件,這個15個核心窗口部件類列表以下:
窗口部件及說明:
Button:
一個簡單的按鈕,用來執行一個命令或別的操做。
Canvas:
組織圖形。這個部件能夠用來繪製圖表和圖,建立圖形編輯器,實現定製窗口部件。
Checkbutton:
表明一個變量,它有兩個不一樣的值。點擊這個按鈕將會在這兩個值間切換。
Entry:
文本輸入域。
Frame:
一個容器窗口部件。幀能夠有邊框和背景,當建立一個應用程序或dialog(對話)版面時,幀被用來組織其它的窗口部件。
Label:
顯示一個文本或圖象。
Listbox:
顯示供選方案的一個列表。listbox可以被配置來獲得radiobutton或checklist的行爲。
Menu:
菜單條。用來實現下拉和彈出式菜單。
Menubutton:
菜單按鈕。用來實現下拉式菜單。
Message:
顯示一文本。相似label窗口部件,可是可以自動地調整文本到給定的寬度或比率。
Radiobutton:
表明一個變量,它能夠有多個值中的一個。點擊它將爲這個變量設置值,而且清除與這同一變量相關的其它radiobutton。
Scale:
容許你經過滑塊來設置一數字值。
Scrollbar:
爲配合使用canvas, entry, listbox, and text窗口部件的標準滾動條。
Text:
格式化文本顯示。容許你用不一樣的樣式和屬性來顯示和編輯文本。同時支持內嵌圖象和窗口。
Toplevel:
一個容器窗口部件,做爲一個單獨的、最上面的窗口顯示。
注意在Tkinter中窗口部件類沒有分級;全部的窗口部件類在樹中都是兄弟。
全部這些窗口部件提供了Misc和幾何管理方法、配置管理方法和部件本身定義的另外的方法。此外,Toplevel類也提供窗口管理接口。這意味一個典型的窗口部件類提供了大約150種方法。
Button窗口部件
Button(按鈕)窗口部件是一個標準的Tkinter窗口部件,用來實現各類按鈕。按鈕可以包含文本或圖象,而且你可以將按鈕與一個Python函數或方法相關聯。當這個按鈕被按下時,Tkinter自動調用相關聯的函數或方法。
按鈕僅能顯示一種字體,可是這個文本能夠跨行。另外,這個文本中的一個字母能夠有下劃線,例如標明一個快捷鍵。默認狀況,Tab鍵用於將焦點移動到一個按鈕部件。
1、那麼何時用按鈕部件呢?
簡而言之,按鈕部件用來讓用戶說「立刻給我執行這個任務」,一般咱們用顯示在按鈕上的文本或圖象來提示。按鈕一般用在工具條中或應用程序窗口中,而且用來接收或忽略輸入在對話框中的數據。
關於按鈕和輸入的數據的配合,能夠參看Checkbutton和Radiobutton部件。
2、樣式
普通的按鈕很容易被建立,僅僅指定按鈕的內容(文本、位圖、圖象)和一個當按鈕被按下時的回調函數便可:
b = Button(master, text="OK", command=self.ok)
沒有回調函數的按鈕是沒有用的,當你按下這個按鈕時它什麼也不作。你可能在開發一個應用程序的時候想實現這種按鈕,好比爲了避免干擾你的beta版的測試者:
b = Button(master, text="Help", state=DISABLED)
如 果你沒有指定尺寸,按鈕的大小將正好可以容納它的內容。你能夠用padx和pady選項來增長內容與按鈕邊框的間距。你也能夠用height和width 選項來顯式地設置按鈕的尺寸。若是你在按鈕中顯示文本,那麼這些選項將以文本的單位爲定義按鈕的尺寸。若是你替而代之顯示圖象,那麼按鈕的尺寸將是象素 (或其它的屏幕單位)。你實際上甚至可以用象素單位來定義文本按鈕的尺寸,但這可能帶來意外的結果。下面是指定尺寸的一段例子代碼:
f = Frame(master, height=32, width=32)
f.pack_propagate(0) # don't shrink
b = Button(f, text="Sure!")
b.pack(fill=BOTH, expand=1)
按鈕可以顯示多行文本(但只能用一種字體)。 你可使用多行或wraplength選項來使按鈕本身調整文本。當調整文本時,使用anchor,justify,也可加上padx選項來獲得你所但願的格式。一個例子以下:
b = Button(master, text=longtext, anchor=W, justify=LEFT, padx=2)
爲了使一個普通的按鈕看起來像凹入的,例如你想去實現某種類型的工具框,你可簡單地將relief的值從"RAISED"改變爲"SUNKEN:
b.config(relief=SUNKEN)
你也可能想改變背景。注意:一個大概更好的解決方案是使用一個Checkbutton或Radiobutton其indicatoron選項的值設置爲false:
b = Checkbutton(master, image=bold, variable=var, indicatoron=0)
3、方法
Button窗口部件支持標準的Tkinter窗口部件接口,加上下面的方法:
flash():頻繁重畫按鈕,使其在活動和普通樣式下切換。
invoke() :調用與按鈕相關聯的命令。
下面的方法與你實現本身的按鈕綁定有關:
tkButtonDown(), tkButtonEnter(), tkButtonInvoke(), tkButtonLeave(), tkButtonUp()
這些方法能夠用在定製事件綁定中,全部這些方法接收0個或多個形參。
4、選項
Button窗口部件支持下面的選項:
activebackground, activeforeground
類型:顏色;
說明:當按鈕被激活時所使用的顏色。
anchor
類型:常量;
說明:控制按鈕上內容的位置。使用N, NE, E, SE, S, SW, W, NW, or CENTER這些值之一。默認值是CENTER。
background (bg), foreground (fg)
類型:顏色;
說明:按鈕的顏色。默認值與特定平臺相關。
bitmap
類型:位圖;
說 明:顯示在窗口部件中的位圖。若是image選項被指定了,則這個選項被忽略。下面的位圖在全部平臺上都有 效:error, gray75, gray50, gray25, gray12, hourglass, info, questhead, question, 和 warning.
這 後面附加的位圖僅在Macintosh上有 效:document, stationery, edition, application, accessory, folder, pfolder, trash, floppy, ramdisk, cdrom, preferences, querydoc, stop, note, 和 caution.
你也能夠從一個XBM文件中裝載位圖。只須要在XBM文件名前加一個前綴@,例如"@sample.xbm"。
borderwidth (bd)
類型:整數;
說明:按鈕邊框的寬度。默認值與特定平臺相關。但一般是1或2象素。
command
類型:回調;
說明:當按鈕被按下時所調用的一個函數或方法。所回調的能夠是一個函數、方法或別的可調用的Python對象。
cursor
類型:光標;
說明:當鼠標移動到按鈕上時所顯示的光標。
default
類型:常量;
說明:若是設置了,則按鈕爲默認按鈕。注意這個語法在Tk 8.0b2中已改變。
disabledforeground
類型:顏色;
說明:當按鈕無效時的顏色。
font
類型:字體;
說明:按鈕所使用的字體。按鈕只能包含一種字體的文本。
highlightbackground, highlightcolor
類型:顏色;
說明:控制焦點所在的高亮邊框的顏色。當窗口部件得到焦點的時候,邊框爲highlightcolor所指定的顏色。不然邊框爲highlightbackground所指定的顏色。默認值由系統所定。
highlightthickness
類型:距離;
說明:控制焦點所在的高亮邊框的寬度。默認值一般是1或2象素。
image
類型:圖象;
說明:在部件中顯示的圖象。若是指定,則text和bitmap選項將被忽略。
justify
類型:常量;
說明:定義多行文本如何對齊。可取值有:LEFT, RIGHT, 或 CENTER。
padx, pady
類型:距離;
說明:指定文本或圖象與按鈕邊框的間距。
relief
類型:常量;
說明:邊框的裝飾。一般按鈕按下時是凹陷的,不然凸起。另外的可能取值有GROOVE, RIDGE, 和 FLAT。
state
類型:常量;
說明:按鈕的狀態:NORMAL, ACTIVE 或 DISABLED。默認值爲NORMAL。
takefocus
類型:標誌;
說明:代表用戶能夠Tab鍵來將焦點移到這個按鈕上。默認值是一個空字符串,意思是若是按鈕有按鍵綁定的話,它能夠經過所綁定的按鍵來得到焦點。
text
類型:字符串;
說明:顯示在按鈕中的文本。文本能夠是多行。若是bitmaps或image選項被使用,則text選項被忽略。
textvariable
類型:變量;
說明:與按鈕相關的Tk變量(一般是一個字符串變量)。若是這個變量的值改變,那麼按鈕上的文本相應更新。
underline
類型:整數;
說明:在文本標籤中哪一個字符加下劃線。默認值爲-1,意思是沒有字符加下劃線。
width, height
類型:距離;
說明:按鈕的尺寸。若是按鈕顯示文本,尺寸使用文本的單位。若是按鈕顯示圖象,尺寸以象素爲單位(或屏幕的單位)。若是尺寸沒指定,它將根據按鈕的內容來計算。
wraplength
類型:距離;
說明:肯定一個按鈕的文本什麼時候調整爲多行。它以屏幕的單位爲單位。默認不調整。
Mixins
Tkinter模塊提供了相應於Tk中的各類窗口部件類型的類和必定數量的mixin和別的幫助類(mixin是一個類,被設計來使用多態繼承與其它的類結合)。當你使用Tkinter時,你不將直接訪問mixin類。
1、實施mixins
經過root窗口和窗口部件類,Misc類被用做mixin。它提供了大量的Tk和窗口相關服務,這些服務對全部Tkinter核心窗口部件者有效。這些經過委託完成;窗口部件僅僅直接請求適當的內部對象。
Wm類經過root窗口和頂級窗口部件類被用做mixin。經過委託它提供了窗口管理服務。
使用委託像這樣簡化你的應用程序代碼:一旦你有一窗口部件,你可以使用這個窗口部件的實例的方法訪問Tkinter的全部部份。
2、Geometry(幾何學)與mixins
Grid,Pack,Place這些類經過窗口部件類被用做mixins。經過委託,它們也提供了訪問不一樣幾何管理的支持。
下面是Geometry Mixins的列表及說明:
管理器及說明:
Grid:grid幾何管理器容許你經過在一個二維網格中組織窗口部件來建立一個相似表的版面。
Pack:pack幾何管理器經過在一個幀中把窗口部件包裝到一個父部件中來建立一個版面。爲了對窗口部件使用這個幾何管理器,咱們在這個窗口部件上使用pack方法來集成。
Place:place幾何管理器讓你顯式將一個窗口部件放到給定的位置。要使用這個幾何管理器,需使用place方法。
3、窗口部件配置管理
Widget類使用 geometry mixins來混合Misc類,並經過cget和configure方法來增長配置管理,也能夠經過一個局部的字典接口。
窗口部件的配置
要配置一個窗口部件的外觀,你用選項比使用方法調用好。典型的選項包括text、color、size、command等等。對於處理選項,全部的核心窗口部件執行一樣的配置接口:
配置接口
widgetclass(master, option=value, ...) => widget
說明:
創 建這個窗口部件的一個實例,這個實例做爲給定的master的孩子,而且使用給定的選項。全部的選項都有默認值,所以在簡單的狀況下,你僅須要指定這個 master。若是你想的話,你也能夠不指定master;Tkinter這時會使用最近建立的root窗口做爲master。注意這個name選項僅能 在窗口部件被建立時設置。
cget(option) => string
說明:
返回一個選項的當前值。選項的名字和返回值都是字符串。要獲得name選項,使用str(widget)代替。
configure(option=value, ...), config(option=value, ...)
說明:
設置一個或多個選項(做爲關鍵字參數給定)。
注意一些選項的名字與Python中的保留字相同(class,from等)。要使用這些做爲關鍵字參數,僅須要在這些選項名後添加一下劃線(class_,from_)。注意你不能用此方法來設置name選項;name選項只能在窗口部件被建立時設置。
爲了方便起見,窗口部件也實現一個局部的字典接口。 __setitem__ 方法映射configure,而__getitem__方法映射cget。你可使用下面的語法來設置和查詢選項:
value = widget[option]
widget[option] = value
注意每一個賦值都致使一個對Tk的調用。若是你但願去改變多個選項,單獨地調用(config或configure)去改變它們是一個好的主意。
這下面的字典方法也適用於窗口部件:
keys() => list
說明:
返回窗口部件中全部能夠被設置的選項的一個列表。name選項不包括在這個列表中(它不能經過字典接口被查詢或修改)。
向後兼容性
關鍵字參數在Python1.3時被引入。以前,使用原始的Python字典將選項傳遞給窗口構造器和configure方法。原代碼相似以下:
self.button = Button(frame, {"text": "QUIT", "fg": "red", "command": frame.quit})
self.button.pack({"side": LEFT})
關鍵字參數語法更優雅和少容易發生錯誤。可是爲了與存在的代碼兼容,Tkinter仍支持老的語法。在新的程序中你不該再用老的語法,即便是在某些狀況下是頗有吸引力的。例如,若是你建立了一個定製的窗口部件,它須要沿它的父類傳遞配置選項,你的代碼可能以下:
def __init__(self, master, **kw):
Canvas.__init__(self, master, kw) # kw 是一個字典
上面的代碼在當前版本的Tkinter下工做的很好,可是它在未來的版本下可能不工做。一個一般的辦法是使用apply函數:
def __init__(self, master, **kw):
apply(Canvas.__init__, (self, master), kw)
這個apply函數使用了一個函數(一個未約束的方法),一個帶參數的元組(它必須包括self,由於咱們調用一個未約束的方法),一個可選的,提供了關鍵字參數的字典。
窗口部件的樣式之顏色
全部的Tkinter標準窗口部件提供了一套樣式設置選項,這讓你能夠去修改這些窗口部件的外觀如顏色、字體和其它的可視外觀。
顏色
大部份窗口部件都容許你指定窗口部件和文本的顏色,這可使用background和foreground選項。要指定顏色,你可使用顏色名,也可使用紅、綠、藍顏色組合。
一、顏色名
Tkinter 包括一個顏色數據庫,它將顏色名映射到相應的RGB值。這個數據庫包括了一般的名稱如Red, Green, Blue, Yellow, 和 LightBlue,也可以使用外來的如Moccasin,PeachPuff等等。在X window系統上,顏色名由X server定義。你可以找到 一個名爲xrgb.txt的文件,它包含了一個由顏色名和相應RGB值組成的列表。在Windows和Macintosh系統上,顏色名錶內建於Tk中。
在Windows下,你可使用Windows系統顏色(用戶能夠經過控制面板來改變這些顏色):
SystemActiveBorder, SystemActiveCaption, SystemAppWorkspace, SystemBackground,
SystemButtonFace, SystemButtonHighlight, SystemButtonShadow, SystemButtonText,
SystemCaptionText, SystemDisabledText, SystemHighlight, SystemHighlightText,
SystemInactiveBorder, SystemInactiveCaption, SystemInactiveCaptionText, SystemMenu,
SystemMenuText, SystemScrollbar, SystemWindow, SystemWindowFrame, SystemWindowText。
在Macintosh上,下面的系統顏色是有效的:
SystemButtonFace, SystemButtonFrame, SystemButtonText, SystemHighlight, SystemHighlightText, SystemMenu, SystemMenuActive, SystemMenuActiveText, SystemMenuDisabled, SystemMenuText, SystemWindowBody。顏色名是大小寫不敏感的。許多顏色名詞與詞之間有無格都有效。例如"lightblue", "light blue", 和 "Light Blue"都是同一顏色。二、RGB格式若是你須要顯式地指定顏色名,你可使用以下格式的字符串:#RRGGBBRR, GG, BB 分別是red,green和blue值的十六進制表示。下面的例子演示瞭如何將一個顏色三元組轉換爲一個Tk顏色格式:tk_rgb = "#%02x%02x%02x" % (128, 192, 200)Tk也支持用形如"#RGB"和"rrrrggggbbbb"去分別指定16和65536程度之間的值。你可使用窗口部件的winfo_rgb方法來將一個表明顏色的字符串(名字或RGB格式)轉換爲一個三元組:rgb = widget.winfo_rgb("red")red, green, blue = rgb[0]/256, rgb[1]/256, rgb[2]/256注意winfo_rgb返回16位的RGB值,範圍在0~65535之間。要將它們映射到更通用的0~255範圍內,你必須將每一個值都除以256(或將它們向右移8位)。