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

时间:2019-06-24 12:02:13

标签: python wxpython

假设您可以将函数的返回值存储到变量中,以便调用该函数一次,并且在使用变量时仅使用值, 所以我试图通过两次调用“ GetPosion()”来获得位置差异 在不同的时间存储两个值可得出差异,但差异始终为零!!!!!!!!

我的问题是为什么对于两个变量一次调用该函数? 如果我错了就纠正我。


pos1=event.GetPosition()

pos2=event.GetPosition()

deff=pos2-pos1

print(pos1, pos2, deff,'\n')

2 个答案:

答案 0 :(得分:0)

由于您没有发布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()

答案 1 :(得分:-1)

我发现了问题 关于可以表达的时间或位置的最小差异 因此,如果连续时间的代码行在短时间内运行(如果此时间小于可以表示的最小值),则将显示零执行时间或零时间差 鼠标光标的位置也一样,这就是为什么我给零。  as here 这就是我尝试和工作的

    from datetime import datetime

    import time
    start = time.time()
    for i in range(10000):
        pass
    #with out some delay it will always zero
    print('it took:',time.time()-start)