《tkinter實用教程六》tkinter ttk.Label 控制元件
阿新 • • 發佈:2021-10-21
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()
執行結果:
我的個人部落格 魏大王(weidawang.xyz),找我一起玩耍吧!!
wraplength
是以畫素為單位進行換行的