Как получить разницу между начальной и конечной позицией курсора мыши? - PullRequest
1 голос
/ 24 июня 2019

Предполагается, что вы можете сохранить возврат функции в переменные, чтобы функция вызывалась один раз, а когда вы используете переменную, вы используете только значение, поэтому я попытался получить разницу в положении, вызвав "GetPosion ()"дважды в разное время, и при сохранении двух значений получается разница, но разница всегда равна нулю !!!!!!!!

моя проблема в том, почему функция вызывается один раз для двух переменных?и поправьте меня, если я ошибаюсь.


pos1=event.GetPosition()

pos2=event.GetPosition()

deff=pos2-pos1

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

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Я обнаружил, что проблема заключается в минимальной разнице во времени или позиции, которая может быть выражена , поэтому, если последовательные строки кода будут выполняться за короткое время, если это время меньше того минимума, который можно выразить,покажет нулевое время выполнения или нулевую разницу во времени и то же самое для позиции курсора мыши, поэтому он дал мне нули. как здесь и вот что я пробовал и работал

    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)
0 голосов
/ 24 июня 2019

Поскольку вы не разместили 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...