我可以在我的面板上显示一个图像,我需要的是点击图片中的两个点并计算它们之间的距离。我在使用事件处理程序以及如何在Java中类似于扫描仪时遇到问题。例如,如果我运行程序并在图像中的某个地方单击一次,它将同时运行所有3个方法,这将导致错误。在
root = Tk()
img = ImageTk.PhotoImage(Image.open("target.PNG"))
#img = cv2.imread("target.PNG")
panel = Label(root, image = img)
panel.pack(side = "bottom", fill = "both", expand = "yes")
def leftClick(event):
global x0,y0
x0 = event.x
y0 = event.y
return x0, y0
panel.bind("<Button-1>", leftClick)
def rightClick(event):
global x1,y1
x1 = event.x
y1 = event.y
return x1, y1
panel.bind("<Button-1>", rightClick)
def getDistance(event):
distance = math.sqrt( ((x0-x1)**2)+((y0-y1)**2) )
print(distance)
panel.bind("<Button-1>", getDistance)
root.mainloop()
我想要的是一次执行一次每一步。计算距离的最后一步可以在方法之外完成,这并不重要。我只需要先找到坐标。请告诉我怎样才能解决这个问题。在
你可以试试这两种:
过程1(使用鼠标左键单击、右键单击、中键(滚动)单击):
下面的代码需要
(x0,y0)从鼠标左键单击
(x1,y1)从鼠标右键单击
然后在鼠标中键(滚动)上打印它们之间的距离
过程2(仅使用鼠标左键单击):
下面的代码需要
(x0,y0)从第一个鼠标左键单击
(x1,y1)从第二个鼠标左键单击
然后在第三次鼠标左键单击打印它们之间的距离
^{pr2}$下面是一个从起点到终点计数距离的演示,它需要鼠标左键拖动操作。在
相关问题 更多 >
编程相关推荐