簡體   English   中英

使用模塊 tkinter 中的方法 create_oval() 時,如何繪制每個圓 label?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM