如何计算行驶距离Tkinter按钮

2024-09-30 16:40:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我可以跟踪用户点击的位置和释放的位置,但我想跟踪移动的距离。在

从Tkinter导入* 根=Tk()

类DragCursor():

def __init__(self, location):
    self.label = location
    location.bind('<ButtonPress-1>', self.StartMove)
    location.bind('<ButtonRelease-1>', self.StopMove)


def StartMove(self, event):
    startx = event.x
    starty = event.y
    print [startx, starty]

def StopMove(self, event):
    self.StartMove
    stopx = event.x
    stopy = event.y
    print [stopx, stopy]



location = Canvas(root, width = 300, height = 300)
DragCursor(location)
location.pack()
root.mainloop()

Tags: 用户selfeventbinddeflocationrootprint
1条回答
网友
1楼 · 发布于 2024-09-30 16:40:15

你只需要用距离公式来确定xy平面上两点之间的距离

Distance Formula Wikipedia

此外,您还需要包含一些实例变量,该变量将保存起点和终点的坐标,以便您可以在鼠标释放后进行计算。在

这几乎就是您的代码,只需使用一个新的distancetraveled函数,该函数使用self.positionsStopMove的末尾打印出来。在

from Tkinter import *

root = Tk()

class DragCursor():
    def __init__(self, location):
        self.label = location
        location.bind('<ButtonPress-1>', self.StartMove)
        location.bind('<ButtonRelease-1>', self.StopMove)
        self.positions = {}

    def StartMove(self, event):
        startx = event.x
        starty = event.y
        self.positions['start'] = (startx, starty)

    def StopMove(self, event):
        stopx = event.x
        stopy = event.y
        self.positions['stop'] = (stopx, stopy)
        print self.distancetraveled()

    def distancetraveled(self):
        x1 = self.positions['start'][0]
        x2 = self.positions['stop'][0]
        y1 = self.positions['start'][1]
        y2 = self.positions['stop'][1]
        return ((x2-x1)**2 + (y2-y1)**2)**0.5

location = Canvas(root, width = 300, height = 300)
DragCursor(location)
location.pack()
root.mainloop()

相关问题 更多 >