如何给Tkinter Label组件设置圆角边框?
给Tkinter Label设置圆角边框的两种简单方法
Tkinter原生Label组件没有直接设置圆角边框的选项,下面用两种容易上手的方式实现:
方法一:用Canvas画圆角背景,再放置Label
思路是先画一个带圆角的矩形当背景,把Label放在上面,视觉上就像Label有圆角边框。
步骤:
- 创建Canvas组件,尺寸比Label稍大,留出边框空间
- 封装一个画圆角矩形的函数(Canvas原生没有这个方法)
- 创建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,可以通过自定义样式快速实现圆角,代码更简洁。
步骤:
- 导入ttk模块
- 创建Style对象,定义带圆角的样式
- 用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
相关产品推荐
相关产品推荐

