假设您可以将函数的返回值存储到变量中,以便调用该函数一次,并且在使用变量时仅使用值, 所以我试图通过两次调用“ GetPosion()”来获得位置差异 在不同的时间存储两个值可得出差异,但差异始终为零!!!!!!!!
我的问题是为什么对于两个变量一次调用该函数? 如果我错了就纠正我。
pos1=event.GetPosition()
pos2=event.GetPosition()
deff=pos2-pos1
print(pos1, pos2, deff,'\n')
答案 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)