Tkinter中使用canvas.create_oval绘制的椭圆能否添加文本标签?
实现方法
可以实现,你可以通过create_text方法在椭圆对应位置绘制文本标签即可。
你绘制的椭圆基于外接矩形左上角(x1,y1)、右下角(x2,y2)生成,只需要先计算出椭圆的中心坐标,再在对应位置绘制文本即可。如果需要文本和椭圆作为整体移动/修改,可以给两个元素绑定相同的标签统一管理。
可运行示例代码
import tkinter as tk # 基础参数配置 width = 400 height = 300 x1, y1, x2, y2 = 100, 100, 250, 180 window = tk.Tk() canvas = tk.Canvas(window, width=width, height=height, bg='black') # 绘制椭圆,绑定自定义标签方便后续统一操作 oval = canvas.create_oval(x1, y1, x2, y2, fill='red', tag="target_oval") # 计算椭圆中心坐标 center_x = (x1 + x2) / 2 center_y = (y1 + y2) / 2 # 绘制文本标签,fill设置文本颜色,font可自定义字体和大小,同样绑定相同标签 text = canvas.create_text(center_x, center_y, text="椭圆标签", fill="white", font=("微软雅黑", 12), tag="target_oval") # 示例:如果需要整体移动椭圆和标签,直接操作标签即可 # canvas.move("target_oval", 20, 20) # 如果后续动态修改椭圆位置,更新后重新计算中心坐标,调用下面方法更新文本位置即可 # canvas.coords(text, new_center_x, new_center_y) canvas.pack() window.mainloop()
如果需要标签放在椭圆外侧,仅需调整create_text的坐标参数即可,不需要和椭圆中心重合。
内容的提问来源于stack exchange,提问作者CairoMisr
相关产品推荐
相关产品推荐

