Tkinter 元件詳解(一):Label
Tkinter 元件詳解之Label
Label(標籤)元件用於在螢幕上顯示文字或影象。Label 元件僅能顯示單一字型的文字,但文字可以跨越多行。另外,還可以為其中的個別字元加上下劃線(例如用於表示鍵盤快捷鍵)。
何時使用 Label 元件?
Label 元件用於顯示文字和影象,並且使用雙緩衝,這樣你就可以隨時更新內容,沒有惱人的閃爍。
如果希望顯示的資料使用者可以進行操作,使用 Canvas 元件或許更為合適。
用法
使用 Label 元件,你可以指定想要顯示的內容(可以是文字、點陣圖或者圖片):
import tkinter as tk master = tk.Tk() w = tk.Label(master, text="你好,來自江南的你!") w.pack() master.mainloop()
如果你沒有指定 Label 的大小,那麼 Label 的尺寸是正好可以容納其內容而已,如下:
當然你可以通過 height 和 width 選項來明確設定 Label 的大小:如果你顯示的是文字,那麼這兩個選項是以文字單元為單位定義 Label 的大小;如果你顯示的是點陣圖或者影象,那麼它們以畫素為單位(或者其他螢幕單元)定義 Label 大小。
你可以通過 foreground(或 fg)和 background(或 bg)選項來設定 Label 的前景色和背景色。你也可以選擇 Label 中的文字用哪種字型來顯示。指定顏色和字型時需謹慎,除非你有一個很好的理由,否則建議使用預設值(主要是考慮到不同平臺的相容性)。
w = tk.Label(master, text="你好,來自江南的你", font=("華文行楷", 20), fg="green")
注:你還可以使用 #RRGGBB 的格式指定具體的顏色值,例如 "#%02x%02x%02x" % (123, 188, 233)
Label 可以顯示多行文字,你可以直接使用換行符或使用 wraplength 選項來實現。當文字換行的時候,你可以使用 anchor 和 justify 選項來使得文字如你所希望的顯示出來:
longtext = """ Label 可以顯示多行文字,你可以直接使用換行符 或使用 wraplength 選項來實現。當文字換行的時 候,你可以使用 anchor 和 justify 選項來使得 文字如你所希望的顯示出來。 """ w = tk.Label(master, text=longtext, anchor="w", justify="left")
Label 可以顯示 Tkinter 變數的內容。言下之意就是當變數的內容發生改變時,Label 中顯示的內容也會自動更新:
v = tk.StringVar()
w = tk.Label(master, textvariable=v)
v.set("~新的文字~")
w.pack()
你可以使用 Label 顯示 PhotoImage 和 BitmapImage 物件。當你這麼做的時候,請務必保留一份圖片物件的引用,以防止被 Python 的垃圾回收機制回收。你可以使用一個全域性變數,或一個例項的屬性,或者再簡單點,在例項上新增一個屬性即可:
photo = tk.PhotoImage(file="python.gif")
w = tk.Label(master, image=photo)
w.pack()
引數
Label(master=None, **options) (class)
master -- 父元件
**options -- 元件選項,下方表格詳細列舉了各個選項的具體含義和用法:
選項 | 含義 |
activebackground | 1. 設定當 Label 處於活動狀態(通過 state 選項設定狀態)的背景色 2. 預設值由系統指定 |
activeforeground | 1. 設定當 Label 處於活動狀態(通過 state 選項設定狀態)的前景色 2. 預設值由系統指定 |
anchor | 1. 控制文字(或影象)在 Label 中顯示的位置 2. "n", "ne", "e", "se", "s", "sw", "w", "nw", 或者 "center" 來定位(ewsn 代表東西南北,上北下南左西右東) 3. 預設值是 "center" |
background | 1. 設定背景顏色 2. 預設值由系統指定 |
bg | 跟 background 一樣 |
bitmap | 1. 指定顯示到 Label 上的點陣圖 2. 如果指定了 image 選項,則該選項被忽略 |
borderwidth | 1. 指定 Label 的邊框寬度 2. 預設值由系統指定,通常是 1 或 2 畫素 |
bd | 跟 borderwidth 一樣 |
compound | 1. 控制 Label 中文字和影象的混合模式 2. 預設情況下,如果有指定點陣圖或圖片,則不顯示文字 3. 如果該選項設定為 "center",文字顯示在影象上(文字重疊影象) 4. 如果該選項設定為 "bottom","left","right" 或 "top",那麼影象顯示在文字的旁邊(如 "bottom",則影象在文字的下方) 5. 預設值是 NONE |
cursor | 1. 指定當滑鼠在 Label 上飄過的時候的滑鼠樣式 2. 預設值由系統指定 |
disabledforeground | 1. 指定當 Label 不可用的時候前景色的顏色 2. 預設值由系統指定 |
font | 1. 指定 Label 中文字的字型(注:如果同時設定字型和大小,應該用元組包起來,如("楷體", 20) 2. 一個 Label 只能設定一種字型 3. 預設值由系統指定 |
foreground | 1. 設定 Label 的文字和點陣圖的顏色 2. 預設值由系統指定 |
fg | 跟 foreground 一樣 |
height | 1. 設定 Label 的高度 2. 如果 Label 顯示的是文字,那麼單位是文字單元 3. 如果 Label 顯示的是影象,那麼單位是畫素(或螢幕單元) 4. 如果設定為 0 或者乾脆不設定,那麼會自動根據 Label 的內容計算出高度 |
highlightbackground | 1. 指定當 Label 沒有獲得焦點的時候高亮邊框的顏色 2. 預設值由系統指定,通常是標準背景顏色 |
highlightcolor | 1. 指定當 Label 獲得焦點的時候高亮邊框的顏色 2. 預設值由系統指定 |
highlightthickness | 1. 指定高亮邊框的寬度 2. 預設值是 0(不帶高亮邊框) |
image | 1. 指定 Label 顯示的圖片 2. 該值應該是 PhotoImage,BitmapImage,或者能相容的物件 3. 該選項優先於 text 和 bitmap 選項 |
justify | 1. 定義如何對齊多行文字 2. 使用 "left","right" 或 "center" 3. 注意,文字的位置取決於 anchor 選項 4. 預設值是 "center" |
padx | 1. 指定 Label 水平方向上的額外間距(內容和邊框間) 2. 單位是畫素 |
pady | 1. 指定 Label 垂直方向上的額外間距(內容和邊框間) 2. 單位是畫素 |
relief | 1. 指定邊框樣式 2. 預設值是 "flat" 3. 另外你還可以設定 "groove", "raised", "ridge", "solid" 或者 "sunken" |
state | 1. 指定 Label 的狀態 2. 這個標籤控制 Label 如何顯示 3. 預設值是 "normal 4. 另外你還可以設定 "active" 或 "disabled" |
takefocus | 1. 如果是 True,該 Label 接受輸入焦點 2. 預設值是 False |
text | 1. 指定 Label 顯示的文字 2. 文字可以包含換行符 3. 如果設定了 bitmap 或 image 選項,該選項則被忽略 |
textvariable | 1. Label 顯示 Tkinter 變數(通常是一個 StringVar 變數)的內容 2. 如果變數被修改,Label 的文字會自動更新 |
underline | 1. 跟 text 選項一起使用,用於指定哪一個字元畫下劃線(例如用於表示鍵盤快捷鍵) 2. 預設值是 -1 3. 例如設定為 1,則說明在 Button 的第 2 個字元處畫下劃線 |
width | 1. 設定 Label 的寬度 2. 如果 Label 顯示的是文字,那麼單位是文字單元 3. 如果 Label 顯示的是影象,那麼單位是畫素(或螢幕單元) 4. 如果設定為 0 或者乾脆不設定,那麼會自動根據 Label 的內容計算出寬度 |
wraplength | 1. 決定 Label 的文字應該被分成多少行 2. 該選項指定每行的長度,單位是螢幕單元 3. 預設值是 0 |