《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()

展示效果如下圖:

ttk.Label

一般的控件放置順序是,在主窗口中放置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()

代碼執行結果如下圖:

textvariable

點擊按鈕后,如下圖:

StringVar

被綁定的變量,並非普通變量,必須是通過 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()

執行結果如下圖:

PhotoImage

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()

執行結果如下:

compound

多行文本展示

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()

執行結果:

image

wraplength 是以像素為單位進行換行的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM