label = tk.Label(root, text="你好,Tkinter!", font=("Arial", 20))
tk.Label()
: 创建标签组件- 第一个参数
root
: 指定父容器(主窗口) text
: 设置显示的文本内容font
: 设置字体和大小(格式:(字体名, 字号))
- 第一个参数
label.pack(pady=20)
.pack()
: 使用pack布局管理器放置组件pady=20
: 设置组件在垂直方向上的外边距为20像素
2. Label的常用属性
除了基础的text
和font
,Label还支持以下常用属性:
属性 | 说明 | 示例 |
---|---|---|
bg | 背景色 | bg="lightblue" |
fg | 文字颜色 | fg="red" |
width | 宽度(字符单位) | width=20 |
height | 高度(行数) | height=2 |
borderwidth | 边框宽度 | borderwidth=2 |
relief | 边框样式 | relief="ridge" |
示例:
tk.Label(root,
text="多彩标签",
bg="yellow",
fg="blue",
font=("楷体", 16),
borderwidth=2,
relief="groove").pack()
3. 动态更新Label内容
Label的内容可以通过config()
方法实时更新:
counter = 0
def update_label():
global counter
counter += 1
label.config(text=f"计数: {counter}")
root.after(1000, update_label) # 每秒更新一次
label = tk.Label(root, text="初始文本")
label.pack()
update_label() # 开始更新
4. Label的特殊应用
① 显示图片
from tkinter import PhotoImage
img = PhotoImage(file="python-logo.png")
tk.Label(root, image=img).pack()
② 超链接效果
def open_link():
import webbrowser
webbrowser.open("https://www.python.org")
link = tk.Label(root,
text="访问Python官网",
fg="blue",
cursor="hand2")
link.pack()
link.bind("<Button-1>", lambda e: open_link())
5. 布局进阶技巧
混合使用pack参数
tk.Label(root, text="上边距30", bg="pink").pack(pady=30)
tk.Label(root, text="左右边距50", bg="lightgreen").pack(padx=50)
tk.Label(root, text="上下左右边距", bg="cyan").pack(padx=10, pady=10)
对齐控制
tk.Label(root, text="左对齐", bg="yellow").pack(anchor="w") # west
tk.Label(root, text="居中对齐", bg="lightblue").pack() # 默认center
tk.Label(root, text="右对齐", bg="pink").pack(anchor="e") # east
6. 完整示例程序
import tkinter as tk
root = tk.Tk()
root.title("Label功能演示")
root.geometry("400x300")
# 基础Label
tk.Label(root,
text="主标题",
font=("黑体", 24),
fg="white",
bg="navy").pack(fill="x", pady=10)
# 动态Label
num = 0
def update():
global num
num += 1
dynamic_label.config(text=f"动态数值: {num}")
root.after(1000, update) # 每秒更新
dynamic_label = tk.Label(root, font=("Arial", 14))
dynamic_label.pack(pady=10)
update()
# 多属性Label
tk.Label(root,
text="属性大全演示",
bg="lightyellow",
fg="darkred",
font=("宋体", 12, "italic"),
borderwidth=2,
relief="ridge",
padx=20,
pady=10).pack(pady=20)
root.mainloop()
7. 常见问题解答
Q: 为什么我的Label不显示? A: 检查是否漏掉了.pack()
/.grid()
/.place()
布局方法
Q: 如何让Label自动换行? A: 使用wraplength
属性:
tk.Label(root,
text="这是一段很长的文本..."*5,
wraplength=150).pack()
Q: 如何让Label宽度填满窗口? A: 使用fill
参数:
tk.Label(root, text="填满宽度", bg="lightblue").pack(fill="x")