我正在制作一个简单的python程序来模拟鼠标双击,但我遇到了一个问题。 以下是我目前的代码:
from pynput.mouse import Listener
import win32api
import win32con
import random
from time import sleep
accepting_input = True
def click(x, y, delay):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
sleep(delay/1000)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
def on_click(x, y, button, pressed):
global accepting_input
if accepting_input == True:
if pressed:
accepting_input = False
sleep(random.randint(20, 31)/1000)
click(x, y, 10)
print('Double clicked')
accepting_input = True
with Listener(on_click=on_click) as listener:
accepting_input = True
listener.join()
在运行过程中,每当我单击鼠标时,单击都会延迟(我说的是来自物理鼠标的第一次单击,而不是模拟的第二次单击)。
如果我删除代码的click(x, y, 10)
行,我就不会有这个问题。
这个程序是如何延迟我的硬件点击的
我使用这个网站来测试双击:https://codepen.io/blink172/pen/vERyxK
一个可能的线索是,使用该站点时,两次单击之间的延迟小于20到31毫秒(正如我的代码行sleep(random.randint(20, 31)/1000)
所示)
编辑:当我使用pyautogui而不是win32api时,也会发生同样的情况。以下是我的pyautogui代码:
from pynput.mouse import Listener
from random import randint
from pyautogui import click
from time import sleep
accepting_input = True
def on_click(x, y, button, pressed):
global accepting_input
if accepting_input == True:
if pressed:
accepting_input = False
sleep(randint(20, 31)/1000)
click(button='left')
accepting_input = True
with Listener(on_click=on_click) as listener:
accepting_input = True
listener.join()
提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐