tkinter ttk.Label 控件
本文提到的 Label
特指 ttk.Label
,和 tkinter.Label
稍有區別。
標簽 ttk.Label
控件,可以以相同的樣式,顯示一行或多行文本、位圖(bitmat
)或圖像(image
)。
如何創建 ttk.Label
對象
調用 ttk.Label()
方法,並傳入父控件即可,示例如下:
from tkinter import *
from tkinter import ttk
root = Tk()
main = ttk.Frame(root)
l = ttk.Label(main,text="First label") # 創建一個 ttk.Label對象
l.grid() # 放置 l
main.grid(column=0,row=0)
root.mainloop()
展示效果如下圖:
一般的控件放置順序是,在主窗口中放置
Frame
,在Frame
中放置其他控件,如Label
、Button
等。
ttk.Label
如何展示文字
創建 ttk.Label
對象時,傳入的 text
參數是最常用的標簽文本設置方法,尤其當 Label
只是用於展示固定文本的時候。
我們可以通過 label['text']
隨時修改 Label
文本內容。
我們還可以通過 Label
控件綁定一個字符串變量,每當變量值發生改變時,標簽都會展示變量新的值。
這種功能可以通過 textvariable
實現,代碼如下:
from tkinter import *
from tkinter import ttk
def click():
lvalue.set(lvalue.get()+"1") # 設置變量值
root = Tk()
main = ttk.Frame(root)
lvalue = StringVar()
lvalue.set("變量值")
l = ttk.Label(main,text="First label",textvariable=lvalue) # 綁定變量
btn = ttk.Button(main,text="點一下",command=click)
btn.grid(column=0,row=1)
l.grid(column=0,row=0)
main.grid(column=0,row=0)
root.mainloop()
代碼執行結果如下圖:
點擊按鈕后,如下圖:
被綁定的變量,並非普通變量,必須是通過
StringVar()
、IntVar()
創建的特殊對象。
Button
中的內容也是可以綁定變量的!!
ttk.Lable
如何展示圖片
ttk.Label
還可以展示圖片,如果你需要在界面上放置一張圖片,這是最常用的做法。
示例代碼如下:
from tkinter import *
from tkinter import ttk
root = Tk()
main = ttk.Frame(root)
image = PhotoImage(file="bg.png")
label = ttk.Label(main,image=image)
label.grid()
main.grid(column=0,row=0)
root.mainloop()
執行結果如下圖:
ttk.Label
同時展示文字和圖片
如果你同時為 Label
對象設置了 text
參數和 image
參數,那么文字和圖像會同時展示。
此時我們可以使用 compound
參數設定文字和圖片的相對位置。
示例代碼如下:
from tkinter import *
from tkinter import ttk
root = Tk()
main = ttk.Frame(root)
image = PhotoImage(file="bg.png")
label = ttk.Label(main,text="文本",image=image,compound=CENTER)# 文本在圖片中間
label.grid()
labe2 = ttk.Label(main,text="文本",image=image,compound=RIGHT)# 文本在圖片中間
labe2.grid()
labe3 = ttk.Label(main,text="文本",image=image,compound=LEFT)# 文本在圖片中間
labe3.grid()
labe4 = ttk.Label(main,text="文本",image=image,compound=TOP)# 文本在圖片中間
labe4.grid()
labe5 = ttk.Label(main,text="文本",image=image,compound=BOTTOM)# 文本在圖片中間
labe5.grid()
main.grid(column=0,row=0)
root.mainloop()
執行結果如下:
多行文本展示
ttk.Label
可以通過兩種方式展示多行文本:
- 在文本中添加
\n
,主動換行 - 使用
wraplength
指定最寬字符長度,自動換行
示例代碼如下:
from tkinter import *
from tkinter import ttk
root = Tk()
main = ttk.Frame(root)
image = PhotoImage(file="bg.png")
label = ttk.Label(main,text="文本文本文本文本文本文本文本\n文本")# 手動換行
label.grid()
labe2 = ttk.Label(main,text="文本文本文本文本文本文本文本文本文本",wraplength=102)# 自動換行
labe2.grid()
main.grid(column=0,row=0)
root.mainloop()
執行結果:
wraplength
是以像素為單位進行換行的