tkinter標籤元件詳細講解

建立標籤Label 元件

今天講解標籤(Lable)元件,這個元件在程式設計中經常要用得到,而且對於tkinter新手來說,對這個元件的屬性,方法等了解,非常重要,因為標籤Lable屬性,方法跟其它元件是完全相同的,當你對標籤元件的屬性和方法非常熟悉了,再去學其它元件就很容易了。

Label是用來顯示文字或影象的元件。是的,你沒有看錯,這個標籤不但可以顯示文字,也可以顯示影象。但文字目前只能顯示單一大小,單一字型的文字,在顯示影象方面,用PhotoImage()支援只顯示jpg和png格式的影象。

建立一個顯示文字的Lable,語法如下:

新建標籤名=Label(父元件, text=’標籤要顯示的文字’)

下面的程式碼,就可以在建立並顯示一個標籤。

from tkinter import *root=Tk()la1=Label(root,text=‘我是一個標籤’) # 定義一個名為la1的標籤元件la1。pack() # 定位這個標籤元件root。mainloop()

注意,la1。pack() 這行程式碼必不可少,缺少將無法顯示。pack() 是tkinter 用於窗體元件佈局的一種方法(以後會詳細講解),說白了,元件佈局方法就是如何把元件顯示到它的父元件上的合適的位置。

執行結果如下:

tkinter標籤元件詳細講解

設定標籤屬性的3種方法

以上結果就是顯示一個預設引數的標籤,我們想更多的自定義顯示,就要重新設定標籤的屬性。

上一篇文章講解設定窗體屬性的2種方法,這2種方法同樣可以用於元件。

第1種方法,用config()方法 ,重新設定顯示文字,字型,顏色:

la1。config(text=‘重新設定文字’, font=(‘黑體’,20),fg=‘red’)

第2種方法,用字典鍵的方法來設定:

la1[‘text’]=‘重新設定文字’la1[‘font’]= (‘黑體’,20)la1[‘fg’]=‘red’

還有第3種方法:其實在標籤元件定義時,就可以設定相關的屬性。如:

la1=Label(root,text=‘重新設定文字’,font=(‘黑體’,20),fg=‘red’)

用以上3種方法任何一種,執行後,都會得到一個結果,如下圖:

tkinter標籤元件詳細講解

標籤元件到底有多少屬性可以設定?

用 print(la1。keys()) 可以輸出標籤元件可以設定的屬性。

下面一一講解標籤用得比較多的屬性。由於有很多相關屬性其它元件也是一樣擁有,也是一樣用法,在以後的元件屬性講解中,我可能就不再講解了,大家可以收藏此文,以後可以回過頭來,再來看一下標籤元件的講解。

大家先在編輯器裡輸入以下6行程式碼,第4行為空行,以便隨時加入以下的講解程式碼來測試

from tkinter import *root=Tk() # 建立窗體root。geometry(‘300x150+888+444’) # 設定窗體大小及顯示位置# 這裡隨時加入程式碼來測試la1。pack() # 標籤la1定位root。mainloop()

屬性:text bg 或background

text :標籤顯示的文字,文字可包含換行符。

bg 或 background : 標籤的背景顏色。(在tkinter中,bg和background是一樣,用誰都行,但以後要學的ttk,只支援background,不再支援bg)

關於顏色,可以用內建的顏色名稱,如"red“, 也可以用16進位制來表示 ,如“#FFA500”;我以後用文章來講解跟顏色有關的知識,現在剛開始學習,我們先記下幾個常用的顏色名稱來用於學習:

紅色:red 橙色:orange 黃色:yellow 綠色:green 藍色:blue淺藍:lightblue 淺綠:lightgreen 淺黃:lightyellow

加入測試程式碼:

la1=Label(root,text=‘五筆打字通’,bg=‘lightblue’)

執行結果:

tkinter標籤元件詳細講解

text選項加入換行符: \n:

la1=Label(root,text=‘五筆打字通\n是一款五筆打字練習軟體’,bg=‘lightblue’)

執行結果:

tkinter標籤元件詳細講解

顯示結果是,文字換行了,2行是居中對齊,想左對齊怎麼吧,那就用下面的justify屬性。

屬性:justify

justify :決定多行文字如何對齊,預設是居中對齊: center,左對齊用: left, 右對齊用:right

la1=Label(root,text=‘五筆打字通\n是一款五筆打字練習軟體’, bg=‘lightblue’, justify=‘left’,)

執行結果如下,實現了文字的左對齊。

tkinter標籤元件詳細講解

屬性:wraplength

wraplength : 決定多少個畫素文字自動換行。換行符‘\n’是強制換行,如果要自動換行就用wraplength , 但具體多少個畫素換行,需要你反覆除錯。

la1=Label(root,text=‘五筆打字通是一款五筆打字練習軟體’, bg=‘lightblue’, wraplength=90, justify=‘left’,)

程式碼中設定為90個畫素換行,依舊是左對齊。執行結果:

tkinter標籤元件詳細講解

屬性:relief

relief : 標籤的樣式(表現在邊框的不同),預設的樣式是平整的,標籤的所有樣式如下:

flat groove raised ridge solid sunken

平整 邊凹 凸形 邊凸 黑框 凹形

具體樣式見下圖:

tkinter標籤元件詳細講解

relief的具體執行,我們用標籤偽裝一個文字框和按鈕:

la1=Label(root,text=‘ 在此輸入文字 ’,relief=‘sunken’,bg=‘white’)# 樣式sunken為凹形,背景為白色,偽裝為一個文字框la1。pack()la2=Label(root,text=‘ 確定 ’,relief=‘raised’)# 樣式raised為凸形,偽裝為了一個按鈕la2。pack()

執行結果如下:

tkinter標籤元件詳細講解

屬性: bd 或 borderwidth

bd 或 borderwidth : 標籤元件的邊框寬度,預設值系統決定,一般是1或2個畫素。

我們把上面的程式碼加入bd=6 看看邊框寬度為6個畫素,效果如何?

la1=Label(root,text=‘ 在此輸入文字 ’,relief=‘sunken’,bg=‘white’,bd=6) # 樣式sunken為凹形,背景為白色,偽裝為一個文字框la1。pack() la2=Label(root,text=‘ 確定 ’,relief=‘raised’,bd=6) # 樣式raised為凸形,偽裝為了一個按鈕la2。pack()

執行結果:

tkinter標籤元件詳細講解

屬性:fg 或 foreground 和 cursor、font

fg 或 foreground : 標籤字型的顏色

cursor : 標籤的滑鼠游標樣式

font : 標籤的字型資訊,如果同時設定字型名,大小,斜體等引數,要用元組表示,元組有3個引數,第1個引數是字型名,第2個引數是字型大小,第3個引數是一個包含1個或多個字型風格修飾符的字串,如:

font=(‘黑體’,12,‘bold italic underline overstrike’) # 字型的全部表現形式

font=(‘黑體’,12,‘bold’) # 字型為粗體

font=(‘黑體’,12,‘italic underline’) # 斜體,下劃線

注: bold: 粗體, italic: 斜體, underline: 下劃線, overstrike: 刪除線

我們用標籤來模擬一個超連結,程式碼如下:

la1=Label(root,text=‘www。wb98。com’,bg=‘lightblue’,font=(‘黑體’,12,‘underline’), # 標籤字型為黑色,大小12,有下劃線fg=‘blue’, # 字型顏色為藍色cursor=‘hand2’) # 滑鼠樣式為“手形”

執行結果如下:

tkinter標籤元件詳細講解

以上標籤就模擬一個超連結,滑鼠移動上去,就會變成手形,可惜不能點選進入我的網站 wb98。com

一個標籤只能設定一種字型,預設字型是由系統決定的,不同系統的預設字型及預設安裝好的字型不同,如果想做跨平臺程式,牽涉到字型時,要注意這一點。

屬性:image

image : 標籤顯示的圖片,image值應該是由PhotoImage()建立的影象物件。

下面的程式碼,可以在標籤裡顯示一個圖片,但一定要先在程式碼檔案的目錄裡,先準備好圖片檔案0。png

img1=PhotoImage(file=‘0。png’)la1=Label(root,text=‘魂鬥羅’,image=img1,bg=‘lightblue’)

先要在程式碼中先要把圖片檔案0。png透過PhotoImage()方法轉為物件img1,然後才可以在定義標籤裡使用這個影象物件。目前用PhotoImage()方法支援gif 和 png 兩種格式。

執行結果如下:

tkinter標籤元件詳細講解

根據執行結果可知,沒有定義標籤的寬和高,標籤顯示影象,它的尺寸也是可以自適應圖片大小的。但是,由於顯示了影象,而文字“魂鬥羅”卻無法顯示,這說明影象相對於文字,有更高的顯示優先權。如果想文字和影象同時顯示,就要用到下面的引數:compound

屬性:compound

compound : 控制元件標籤影象和文字混合顯示。compound的選項:center,left,right,top,bottom 分別決定文字顯示在影象的正中間,左邊,右邊,上面,下面。

img1=PhotoImage(file=‘0。png’)la1=Label(root,text=‘魂鬥羅’,image=img1,bg=‘lightblue’,compound=‘left’)

執行結果

tkinter標籤元件詳細講解

屬性:width,height

width,height : 文字標籤的寬和高

如果標籤顯示的是字元,那麼寬和高的單位: 字元單位,如果標籤顯示的有影象,那麼寬和高的的單位是:畫素

在不設定標籤寬高的情況下,預設狀態下,標籤大小總跟文字大小工影象大小相適應。如果想設定標籤的大小,大家可以設定width和height,純文字的標籤,width和height的單位都是半形字元單位。

la1=Label(root,text=‘12345’,bg=‘lightblue’,width=5,height=1)

執行結果如下:

tkinter標籤元件詳細講解

其實,你在程式碼把text=’12345’,去除,執行結果,標籤的寬和高也一樣,這說明,width和height這2個引數決定標籤大小,跟text的文字多少沒有關係了。

width=5,height=1 說明標籤大小可以顯示1行5個半形字元

width=6,height=3 說明標籤大小可以顯示3行6個半形字元

以此類推。

但是,顯示文字為中文時,根據我以前學的別的程式語言經驗,中文字元為全形字元,相當於2個半形字元,但在我的電腦裡,用width和height來設定相應的寬和高,總是有些出入,不知為何,大家可以到你的電腦測試一下。

屬性:padx, pady

padx : 決定 Label 水平方向上的額外間距(內容和邊框之間的距離)

pady : 決定 Label 垂直方向上的額外間距(內容和邊框之間的距離)

padx,pady這2個引數,從某種角度來說,是另一種決定標籤大小的方法,但它的單位是畫素。

la1=Label(root,text=‘12345’,bg=‘lightblue’,padx=10,pady=20)

執行結果如下:

tkinter標籤元件詳細講解

標籤在水平方面的左右2邊都增加了10個畫素,在垂直方面的上下2邊都增加了20個畫素。

屬性:anchor

anchor: 如果標籤高、寬大於顯示的文字或影象尺寸,anchor屬性決定標籤文字和影象的顯示位置。

la1=Label(root,text=‘12345’,bg=‘lightblue’,width=20,height=5,anchor=‘se’)

執行結果如下:(上面程式碼中的width和 height的單位是字元單位)

tkinter標籤元件詳細講解

anchor=’se’ 這個程式碼讓標籤文字顯示在這個標籤的右下角

anchor的選項有:”n“, ”ne“, ”e“, ”se“, ”s“, ”sw“, ”w“, ”nw“, 和 ”center“ 代表的方位如下圖所示。(預設是居中顯示‘center‘ )

tkinter標籤元件詳細講解

如果把標籤文字改成影象,也是一樣的。 喆丌嚞

img1=PhotoImage(file=’0。png‘)la1=Label(root,image=img1,bg=’lightblue‘,width=200,height=90,anchor=’se‘)

執行結果:(上面程式碼中的width和 height的單位是畫素)

tkinter標籤元件詳細講解

標籤元件比較常用的屬性,除 textvariabe外,上面我都講解了,不太常用的,我為覺得剛開始學習沒有必要了那麼多,如果你是新手,就更沒有必須一次學那麼多。

以上的屬性,有很多屬性其它元件也一樣擁有,大家要學會舉一反三。

textvariable 會在以後結合變數的知識再講解。

此文章來自我的網站wb98。com ,何老師的濟亨網 - 五筆打字通主頁 網站還有tkinter相關的系列課程文章,感興趣的的可以前往。