[英]How to label each circle you draw when using the method create_oval() from module tkinter?
如何在 Python 中使用模块 tkinter 中的方法create_oval()
绘制每个圆 label?
您必须手动创建一个单独的 canvas 文本 object。
这是一个将文本放置在圆圈中心的示例:
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
到 position 和 label:
这是左上角和右下角的操作方法。 通过对坐标的更多操作,您可以 position 和 label 在其他角、圆内、圆的上方或下方,或左右。
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()
谢谢,因为你的解决方案都很好,我将使用其中之一。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.