Python 如何获得鼠标光标的初始位置和最终位置之间的差异?

Python 如何获得鼠标光标的初始位置和最终位置之间的差异?,python,wxpython,Python,Wxpython,假设你可以将函数的返回值存储到变量中,这样函数被调用一次,当你使用变量时,你只使用值, 因此,我试图通过两次调用“GetPosion()”来获得位置上的差异 在不同的时间,存储这两个值会得到差值,但差值始终为零 我的问题是为什么这两个变量只调用一次函数? 如果我错了,请纠正我 pos1=event.GetPosition() pos2=event.GetPosition() deff=pos2-pos1 打印(pos1、pos2、deff、“\n”) 因为您没有发布MWE,所以很难说为什么您的

假设你可以将函数的返回值存储到变量中,这样函数被调用一次,当你使用变量时,你只使用值, 因此,我试图通过两次调用“GetPosion()”来获得位置上的差异 在不同的时间,存储这两个值会得到差值,但差值始终为零

我的问题是为什么这两个变量只调用一次函数? 如果我错了,请纠正我


pos1=event.GetPosition()
pos2=event.GetPosition()
deff=pos2-pos1
打印(pos1、pos2、deff、“\n”)

因为您没有发布MWE,所以很难说为什么您的代码没有按预期工作

计算两次连续左键单击的坐标差的一种方法如下所示

带注释的代码:

import wx
class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(None, title='Mouse Position', 
            pos=(300, 150), size=(320, 250))

        ### To start the x, y variable. self is used so the value is available
        ### for all methods
        self.x = None
        self.y = None

        self.Show(True)

        self.Bind(wx.EVT_LEFT_UP, self.OnClick)

    def OnClick(self, event):

        #### Last click coordinates
        x, y = event.GetPosition()

        if self.x == None:
            #### First click? then just store the value of x, y
            self.x = x
            self.y = y
            print('First click. Click one more time.')
        else:
            #### Not the first click? then calculate the difference and
            #### update self.x and self.y so they always contain the last
            #### set of coordinates
            xd = x - self.x
            yd = y - self.y

            self.x = x
            self.y = y

            print('deltaX: ' + str(xd) + '  deltaY: ' + str(yd))

app = wx.App()
window = MyFrame()
app.MainLoop()
我发现了问题 它是关于可以表达的时间或位置上的最小差异 所以,如果连续的代码行将在很短的时间内运行,如果这个时间小于可以表示的最小时间,那么它将显示零执行时间或零时间差 鼠标光标的位置也是一样,所以它给了我零。 这就是我所尝试和工作的

从日期时间导入日期时间
导入时间
开始=时间。时间()
对于范围(10000)内的i:
通过
#如果没有延迟,它将始终为零
打印('花费:',time.time()-start)

使用date-time ex时也会发生同样的情况:from datetime import datetime t1=datetime.now()t2=datetime.now()print(t1,t2,t2-t1)答案是零,为什么它会对两个变量调用函数一次???@TariqAbdElghani您能展示一个完整的代码最小工作示例吗?没有看到这一点,我只能推测为什么会有这个问题。我解决了获取位置的问题,但问题是python为什么运行函数并通过所有变量引用相同的返回值,例如:
from datetime import datetime import time strat=time.time()t1=datetime.now()t2=datetime.now()t3=datetime.now()t4=datetime.now()t5=datetime.now()打印(t1、t2、t3、t4、t5、t5-t1)打印('it take:',time.time()-strat)
在本例中,两者的差异均为零example@TariqAbdElghanit1,t2。。。t5不是零。它们保存与创建它们的时刻对应的日期时间。他们有不同的价值观。只需在它们之间添加时间。睡眠(1),这样你就可以看到它们之间的值有更大的差异。根据调用datetime.now()的速度和输出的格式,您可以看到0的差异。