单击 canvas.object (tkinter) 时如何显示文本?
How to display text when clicking on a canvas.object (tkinter)?
我正在尝试使用 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)
不,您不需要按钮来注册鼠标点击。 canvas 可以自己捕获这些事件。您可以按照以下行添加内容:
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()
吗?
我正在尝试使用 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)
不,您不需要按钮来注册鼠标点击。 canvas 可以自己捕获这些事件。您可以按照以下行添加内容:
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()
吗?