在使用Python中的模块tkinter中的create_oval()
方法时,如何标记绘制的每个圆圈?
发布于 2021-12-11 12:50:00
您必须手动创建一个单独的画布文本对象。
下面是一个将文本放置在圆圈中心的示例:
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()
结果:
发布于 2021-12-11 12:56:33
没有内置的方法可以这样做,但是您可以使用圆圈的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()
https://stackoverflow.com/questions/70318203
复制