1. 程式人生 > 其它 >《tkinter實用教程六》tkinter ttk.Label 控制元件

《tkinter實用教程六》tkinter ttk.Label 控制元件

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中放置其他控制元件,如LabelButton等。

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 可以通過兩種方式展示多行文字:

  1. 在文字中新增 \n,主動換行
  2. 使用 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 是以畫素為單位進行換行的

我的個人部落格 魏大王(weidawang.xyz),找我一起玩耍吧!!