天天看點

tkinter學習系列(三)之Label控件

目錄

目錄

  • 目錄
  • 前言
  • (一)基本用法和可選屬性
    • 1.基本用法
    • 2.可選屬性
  • (二)屬性的具體使用
    • 1.常用屬性
      • (1)font
      • (2)fg 與 bg
      • (3)width 與 height
    • 2.邊距與文本對齊方式
      • (1)邊距:padx 與 pady
      • (2)文本對齊方式:justify
    • 案例一
    • 案例一的效果
    • 3.Label裡放圖檔
      • (1)隻放圖檔,沒有文字
    • 案例二
    • 案例二的效果
      • (2)圖檔與文字混搭
    • 案例三
    • 案例三的效果
    • 4.Label可變的文字内容
    • 案例四
    • 案例四的效果
    • 4.文字所在标簽框的方位
    • 案例五
    • 案例五的效果
    • 5.邊框樣式與寬度
    • 案例六
    • 案例六的效果
      • 作者:Mark
      • 日期:2019/01/31 周四

前言

Label是用于顯示文本或圖像的控件。

(一)基本用法和可選屬性

1.基本用法

基本用法:Label(根對象, [屬性清單])

根對象:在那個窗體顯示,例如主窗體。

屬性清單:是可選的屬性=屬性值組成。

2.可選屬性

屬性 說明
text 标簽顯示的文本
font 設定文本的字型和大小
fg(foreground) 字型的顔色,
bg (background) 标簽的背景色
width 标簽的寬度(一個中文的字型寬為機關)
height 标簽的高度(一個中文的字型高為機關)
padx 文字到邊框的距離,水準方向
pady 文字到邊框的距離,垂直方向
bd(borderwidth) 邊框的寬度
relief 邊框的樣式
justify 文本對齊方式
image 圖檔
compound 圖檔與文字的混搭
anchor 方位

(二)屬性的具體使用

1.常用屬性

(1)font

font:設定字型與字型的大小

用法:font=("字型名",大小) 例如:font=(“黑體”, 20)

(2)fg 與 bg

fg 前景色,也就是字型的顔色,bg 背景顔色

用法:fg="red", fg="#121234"

(3)width 與 height

width height 标簽的寬度與高度,都是以系統預設的中文的一個字型寬高為機關

用法:width = 5, height=2

2.邊距與文本對齊方式

(1)邊距:padx 與 pady

文字到邊框的距離 padx 與 pady 水準與豎直方向

用法:padx=2, pady = 1 ,機關是像素,預設是1像素

(2)文本對齊方式:justify

Label 裡的文本支援 轉移字元

用法:justify="left" ,可取 "left" ,"right", "center" ,預設是"center"居中對齊

案例一

import tkinter as tk

# 背景色與前景色
win = tk.Tk()
label_1 = tk.Label(win, text='fg="red" bg="blue"', fg="red", bg="blue")
label_1.pack()

# 字型與字型的大小
label_2 = tk.Label(win, text='font=("微軟雅黑", 20)', font=("微軟雅黑", 20))
label_2.pack()

# 寬度與高度
label_3 = tk.Label(win, text='width=10, height=3', bg="yellow", width=10, height=3)
label_3.pack()
label_4 = tk.Label(win, text='width=20, height=1', bg="yellow", width=20, height=1)
label_4.pack()

# 邊距
label_5 = tk.Label(win, text='padx pady 預設', bg="blue")
label_5.pack()
label_6 = tk.Label(win, text='padx=0, pady=0', bg="blue", padx=0, pady=0)
label_6.pack()
label_7 = tk.Label(win, text='padx=10, pady=10', bg="blue", padx=10, pady=10)
label_7.pack()

# 對齊方式
label_8 = tk.Label(win, text="我是張一根,一匹想飛的狼,
999号哦")
label_8.pack()
label_9 = tk.Label(win, text="我是張一根,一匹想飛的狼,
999号哦", justify="left")
label_9.pack()
label_9 = tk.Label(win, text="我是張一根,一匹想飛的狼,
999号哦", justify="right")
label_9.pack()

win.mainloop()
           

案例一的效果

3.Label裡放圖檔

(1)隻放圖檔,沒有文字

需要先導入圖檔的路徑:img1 = tk.PhotoImage(file="image/01.png")

再使用:image=img1

注:目前支援 .png 與 .gif 格式, 還不支援 .jpg格式

案例二

import tkinter as tk

win = tk.Tk()

# 導入圖檔
img1 = tk.PhotoImage(file="image/01.png")

# 在标簽裡放入圖檔
label_image1 = tk.Label(win, image=img1)
label_image1.pack()

win.mainloop()
           

案例二的效果

(2)圖檔與文字混搭

需要使用:compound="對齊方式",

對齊方式有:'left', "right", "center"

案例三

import tkinter as tk

win = tk.Tk()

# 導入圖檔
img1 = tk.PhotoImage(file="image/01.png")

# 在标簽裡放入圖檔
label_image1 = tk.Label(win, text="圖文并茂", image=img1, compound="left")
label_image1.pack()

label_image2 = tk.Label(win, text="圖文并茂", image=img1, compound="right")
label_image2.pack()

label_image3 = tk.Label(win, text="圖文并茂", image=img1, compound="center", fg="red")
label_image3.pack()

win.mainloop()
           

案例三的效果

4.Label可變的文字内容

先定義一個:tk變量,v = tk.StringVar()

在使用:textvariable=v

案例四

import tkinter as tk
import time

# 背景色與前景色
win = tk.Tk()

# 定義變量,必須是使用的是tk裡的這個變量
v = tk.StringVar()

# 使用v.set("string") 來定義變量
v.set("這是剛開始的文字")

# 在标簽裡添加可變的文本
label_1 = tk.Label(win, textvariable=v, fg="red", bg="green", font=("黑體", 40))
label_1.pack()
while True:
    v.set("%s" % time.ctime())
    label_1.update()
    time.sleep(1)

win.mainloop()
           

案例四的效果

可以制作一個時間表

4.文字所在标簽框的方位

anchor 可選的參數有:"e","w","s","n","ne","se","nw","sw",就是東西南北八個方向

anchor="n"

案例五

import tkinter as tk

win = tk.Tk()
label_1 = tk.Label(win, text="方位是 N", bg="green", width=10, height=3, anchor="n")
label_1.pack()

label_2 = tk.Label(win, text="方位是 NE", bg="blue", width=10, height=3, anchor="ne")
label_2.pack()

label_3 = tk.Label(win, text="方位是 SW", bg="red", width=10, height=3, anchor=tk.SW)
label_3.pack()

label_4 = tk.Label(win, text="方位是 W", bg="yellow", width=10, height=3, anchor=tk.W)
label_4.pack()
win.mainloop()
           

案例五的效果

5.邊框樣式與寬度

relief 表示邊框樣式,可選的參數有:flat(平的),sunken (沉沒的, 凹下去的),raised (提高,凸出來的),ridge(脊,中鍵凸的)

relief="sunken", 預設是flat.

案例六

import tkinter as tk

win = tk.Tk()


# 在标簽裡放入圖檔SUNKEN, RAISED, GROOVE, and RIDGE
# 預設 flat平的
label_1 = tk.Label(win, text='relief=flat', bd=8)
label_1.pack()

# sunken 沉沒的
label_2 = tk.Label(win, text='relief=sunken', relief="sunken", bd=5)
label_2.pack()

# raised 提高
label_3 = tk.Label(win, text='relief=raised', relief="raised", bd=5)
label_3.pack()

# ridge脊
label_4 = tk.Label(win, text='relief=ridge', relief="ridge", bd=10)
label_4.pack()

win.mainloop()
           

案例六的效果

作者:Mark

日期:2019/01/31 周四