You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何给Tkinter Label组件设置圆角边框?

给Tkinter Label设置圆角边框的两种简单方法

Tkinter原生Label组件没有直接设置圆角边框的选项,下面用两种容易上手的方式实现:

方法一:用Canvas画圆角背景,再放置Label

思路是先画一个带圆角的矩形当背景,把Label放在上面,视觉上就像Label有圆角边框。

步骤:

  1. 创建Canvas组件,尺寸比Label稍大,留出边框空间
  2. 封装一个画圆角矩形的函数(Canvas原生没有这个方法)
  3. 创建Label,设置背景和Canvas一致,放在Canvas中心位置

完整代码示例:

import tkinter as tk

def create_round_rectangle(canvas, x1, y1, x2, y2, radius=20, **kwargs):
    # 封装画圆角矩形的函数
    points = [x1+radius, y1,
              x1+radius, y1,
              x2-radius, y1,
              x2-radius, y1,
              x2, y1,
              x2, y1+radius,
              x2, y1+radius,
              x2, y2-radius,
              x2, y2-radius,
              x2, y2,
              x2-radius, y2,
              x2-radius, y2,
              x1+radius, y2,
              x1+radius, y2,
              x1, y2,
              x1, y2-radius,
              x1, y2-radius,
              x1, y1+radius,
              x1, y1+radius,
              x1, y1]
    return canvas.create_polygon(points, **kwargs, smooth=True)

root = tk.Tk()
root.config(bg="#FFFFFF")

# 创建Canvas,预留边框空间
canvas = tk.Canvas(root, width=280, height=60, bg="#FFFFFF", highlightthickness=0)
canvas.pack(pady=20)

# 画圆角矩形:radius是圆角半径,fill是背景色,outline是边框色
create_round_rectangle(canvas, 5, 5, 275, 55, radius=15, fill="#F0F0F0", outline="#30414B", width=2)

# 创建Label,背景和Canvas一致,居中放置
label = tk.Label(canvas, text="List of songs", fg="#30414B", font=("Old Letterhand",23), bg="#FFFFFF")
label.place(relx=0.5, rely=0.5, anchor="center")

root.mainloop()

方法二:用ttk.Style自定义圆角Label

如果用ttk的Label,可以通过自定义样式快速实现圆角,代码更简洁。

步骤:

  1. 导入ttk模块
  2. 创建Style对象,定义带圆角的样式
  3. 用ttk.Label调用这个自定义样式

完整代码示例:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.config(bg="#FFFFFF")

# 创建Style对象
style = ttk.Style(root)

# 自定义样式:设置圆角半径、边框宽度、背景色等
style.configure("RoundedLabel.TLabel",
                foreground="#30414B",
                font=("Old Letterhand",23),
                background="#F0F0F0",
                borderwidth=2,
                relief="solid",
                borderradius=15,
                padding=10)  # padding让文字和边框保持距离

# 使用自定义样式的Label
label = ttk.Label(root, text="List of songs", style="RoundedLabel.TLabel")
label.pack(pady=20, padx=20)

root.mainloop()

注意:

ttk的borderradius属性仅在Tk 8.6.9及以上版本支持,如果你的Tk版本过低,优先使用方法一。

内容的提问来源于stack exchange,提问作者EmrysLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:57:46