[TOC]
# 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 |
- 一、Python基礎
- 1. 序言
- 1.1 Python簡介
- 1.2 安裝和使用IDE
- 1.3 語言特性和基礎概念
- 2. 基本數據類型
- 2.2 字符串型
- 2.2.2 ASCII簡介
- 2.2.4 字符串常用函數
- 3. 條件分支
- 3.3 閑聊條件判斷和運算符優先級
- 10.正則表達式
- 【降龍十八章】Python小技巧
- 18.1 學習網址
- 18.2 PIP切換源
- 18.3 使用whl來安裝
- 【工具優化】IDE優化技巧
- Anaconda
- Jupyter Notebook 的 Markdown 添加大綱
- Jupyter Notebook中圖片縮放和居左
- Anaconda設置環境變量
- Pycharm
- PyCharm新建文檔配置
- 設置字體和字號
- 設置主題和字體配色
- 保存和導入配置
- 設置對選擇內容自動添加引號
- 推薦安裝的插件
- Markdown
- 表格格式
- 二、Python進階
- copy和deepcopy
- 《零基礎入門學習 Python 》【小甲魚版】
- 001.和Python的第一次接觸+習題復習
- 002.用Python設計的第一個游戲 +習題復習
- Pygame詳解
- Pygame詳解:前言
- Pygame詳解(一):Color類
- Pygame詳解(二):display 模塊
- Pygame詳解(三):draw 模塊
- Pygame詳解(四):event 模塊
- Pygame詳解(五):font 模塊
- Pygame詳解(六):image 模塊
- Pygame詳解(七):key 模塊
- Pygame詳解(八):locals 模塊
- Pygame詳解(九):mixer 模塊
- Pygame詳解(十):mouse 模塊
- Pygame詳解(十一):Rect 對象
- Pygame詳解(十二):Surface 對象
- Pygame詳解(十三):time 模塊
- Pygame詳解(十四):music 模塊
- Pygame詳解(十五):pygame 模塊
- Pygame詳解(十六):cursors 模塊
- Pygame詳解(十七):joystick 模塊
- Pygame詳解(十八):mask 模塊
- Pygame詳解(二十一):BufferProxy 對象
- Pygame詳解(二十三):gfxdraw 模塊
- Pygame詳解(二十五):Overlay 對象
- Pygame詳解(二十八):sndarray 模塊
- Pygame詳解(三十一):camera 模塊
- Pygame詳解(三十二):cdrom 模塊
- Pygame詳解(三十六):version 模塊
- pygame rect相關知識
- Tkinter詳解
- Tkinter 組件詳解(一):Label
- Tkinter 組件詳解(二):Button