单击canvas.object(tkinter)时如何显示文本?

时间:2017-07-11 16:47:02

标签: python python-3.x canvas tkinter tkinter-canvas

我正在尝试使用Python 3.6和tkinter 8.6创建GUI。在某个时刻,我想制作一个图表,圆圈代表顶点。我开始使用canvas.objects构建它,但现在我在用户点击圈子时尝试显示一些文本,但我无法找到如何执行此操作。我必须使用一些tk.Buttons,还是有其他选择?

这是我的代码:

from tkinter import *
from random import randint
import math


def create_graph(n,R):

    master = Tk()
    cv = Canvas(master, width=500, height=500)
    cv.grid()
    cv.create_oval(240, 240, 260, 260, fill = "black")
    for i in range(n):
        a,b = 250+R*math.cos(2*math.pi*i/n),250+R*math.sin(2*math.pi*i/n)
        temp=(a,b)
        cv.create_oval(a-10,b-10,a+10,b+10, fill = "black")
        cv.create_line((250,250),temp)
    cv.mainloop()

create_graph(10,100)

1 个答案:

答案 0 :(得分:1)

不,您不需要按钮来注册鼠标点击。画布可以捕捉这些事件本身。您可以按以下方式添加内容:

def callback(event):
    cv.focus_set()
    print("clicked at {} {}".format(event.x, event.y))

cv.bind("<Button-1>", callback)
cv.pack()

然后,您可以使用收到的坐标来测试您是否在您的某个圈内,并采取适当的措施。

顺便说一下,你确定应该运行cv.mainloop()而不是master.mainloop()吗?