使用模块 tkinter 中的 create_oval() 方法时如何标记您绘制的每个圆圈?

How to label each circle you draw when using the method create_oval() from module tkinter?

使用 Python 中模块 tkinter 的方法 create_oval() 时如何标记您绘制的每个圆圈?

您必须手动创建一个单独的 canvas 文本对象。

下面是一个将文本置于圆心的示例:

import tkinter as tk

WIDTH, HEIGHT = 200, 200

root = tk.Tk()

canvas = tk.Canvas(root, width=WIDTH, height=HEIGHT)
canvas.pack()

x0, y0, x1, y1 = 50, 50, 100, 100
canvas.create_oval(x0, y0, x1, y1, outline='black')

center_x, center_y = (x0+x1)/2, (y0+y1)/2
canvas.create_text(center_x, center_y, text='Label')

root.mainloop()

结果:

没有内置方法可以做到这一点,但您可以使用圆圈的 canvas.coords 来定位标签:

以下是左上角和右下角的处理方法。通过对坐标进行更多操作,您可以将标签定位在其他角、圆圈内、圆圈上方或下方,或者左右。

import tkinter as tk

if __name__ == '__main__':

    root = tk.Tk()
    canvas = tk.Canvas(root, width=200, height=200, bg='cyan')
    canvas.pack()
    x0, y0, x1, y1 = 25, 25, 75, 75

    circle_A = canvas.create_oval(x0, y0, x1, y1)
    canvas.create_text(canvas.coords(circle_A)[:2], text='A')

    x0, y0, x1, y1 = 125, 125, 175, 175
    circle_B = canvas.create_oval(x0, y0, x1, y1)
    canvas.create_text(canvas.coords(circle_B)[2:], text='B')

    root.mainloop()