美文网首页
python记录鼠标滑动轨迹

python记录鼠标滑动轨迹

作者: 俊采星驰_87e0 | 来源:发表于2019-11-29 16:29 被阅读0次

    一个记录鼠标轨迹的程序。

    一直需要一个记录鼠标轨迹的程序,本想找一个,但是都不太合适,所以就自己写了一个。功能很简单,就是记录鼠标按下时的滑动轨迹。

    from pynput import mouse
    
    
    class Orbit(object):
        def __init__(self, min_x=-10000, min_y=-10000, max_x=10000, max_y=10000,):
            """可以设置滑动轨迹的范围,x轴和y轴移动的最小值和最大值。
            """
            # 默认的鼠标左键是松开的
            self.left_pressed = False
            self.mouse_x = 0
            self.mouse_y = 0
            self.mouse_list = []
            self.min_x = min_x
            self.min_y = min_y
            self.max_x = max_x
            self.max_y = max_y
    
        def on_move(self, x, y):
            """移动鼠标时会触发这个函数。
    
                x,y为鼠标的绝对坐标。
            """ 
            # 当按下鼠标左键的时候开始打印轨迹,松开时结束。
            if self.left_pressed:
                # 打印和记录的是移动的相对距离。
                print(f"({x-self.mouse_x}, {y-self.mouse_y})")
                self.mouse_list.append((x-self.mouse_x, y-self.mouse_y))
    
        def on_click(self, x, y, button, pressed):
            """点击鼠标时会触发这个函数。
    
                x,y为鼠标的绝对坐标。button为点击的左键还是右键。pressed为鼠标的按压状态,按下时为True。
            """ 
            print('pressed:', pressed, 'button: ', button)
            # 按下鼠标左键开始记录鼠标轨迹。
            if str(button) == "Button.left" and pressed:
                self.left_pressed = True
                self.mouse_x = x
                self.mouse_y = y
                self.mouse_list = []
            # 松开鼠标左键的饰扣开始打印轨迹。
            if str(button) == "Button.left" and not pressed:
                self.left_pressed = False
                if self.mouse_list and self.min_x < self.mouse_list[-1][0] < self.max_x and \
                        self.min_y < self.mouse_list[-1][1] < self.max_y:
                    print(self.mouse_list)
            # 按下鼠标右键的时候停止记录鼠标轨迹。
            if str(button) == "Button.right" and pressed:
                return False
    
        def start(self):
            with mouse.Listener(on_move=self.on_move, on_click=self.on_click) as listener:
                listener.join()
            # 需要监听的鼠标事件。
            listener = mouse.Listener(
                on_move=self.on_move,
                on_click=self.on_click,
                suppress=False
            )
            # 开始监听
            listener.start()
    
    
    if __name__ == '__main__':
        move_track = Orbit(min_x=-164, max_x=-144, min_y=188, max_y=208)
        move_track.start()
    

    pynput 还可以监听鼠标滑轮,如有别的需求可自己修改。

    相关文章

      网友评论

          本文标题:python记录鼠标滑动轨迹

          本文链接:https://www.haomeiwen.com/subject/nvsgwctx.html