PyHook鼠标偶数

2024-10-05 10:21:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了一个小程序,当我按下鼠标左键时,它执行“go”函数。不过,我的目的是在我持有LMB的情况下执行go。如果我释放LMB,它应该取消“开始”。最后,当取消或成功执行它应该准备好做同样的当我再次按下LMB。在

代码如下:

import pyHook
import pythoncom
import pyautogui
from time import sleep
pyautogui.size()

width, height = pyautogui.size()


def go(event):

    sleep(0.099)
    pyautogui.moveRel(4, 19, duration=0.099)
    pyautogui.moveRel(-4, 7, duration=0.099)
    pyautogui.moveRel(-3, 29, duration=0.099)
    pyautogui.moveRel(-1, 31, duration=0.099)
    pyautogui.moveRel(13, 31, duration=0.099)
    pyautogui.moveRel(8, 28, duration=0.099)
    pyautogui.moveRel(13, 21, duration=0.099)
    pyautogui.moveRel(-17, 12, duration=0.099)
    pyautogui.moveRel(-42, -3, duration=0.099)
    pyautogui.moveRel(-21, 2, duration=0.099)
    pyautogui.moveRel(-15, 7, duration=0.099)
    pyautogui.moveRel(12, 11, duration=0.099)
    pyautogui.moveRel(-26, -8, duration=0.099)
    pyautogui.moveRel(-3, 4, duration=0.099)
    pyautogui.moveRel(40, 1, duration=0.099)
    pyautogui.moveRel(19, 7, duration=0.099)
    pyautogui.moveRel(14, 10, duration=0.099)
    pyautogui.moveRel(27, 0, duration=0.099)
    pyautogui.moveRel(33, -10, duration=0.099)
    pyautogui.moveRel(-21, -2, duration=0.099)
    pyautogui.moveRel(7, 3, duration=0.099)
    pyautogui.moveRel(-7, 9, duration=0.099)
    pyautogui.moveRel(-8, 4, duration=0.099)
    pyautogui.moveRel(19, -3, duration=0.099)
    pyautogui.moveRel(5, 6, duration=0.099)
    pyautogui.moveRel(-20, -1, duration=0.099)
    pyautogui.moveRel(-33, -4, duration=0.099)
    pyautogui.moveRel(-45, -21, duration=0.099)
    pyautogui.moveRel(-14, 1, duration=0.099)
    return True



hm = pyHook.HookManager()
hm.SubscribeMouseLeftDown(go)
hm.HookMouse()
pythoncom.PumpMessages()
hm.UnhookMouse()

Tags: 函数import程序gosizesleep鼠标pyhook
1条回答
网友
1楼 · 发布于 2024-10-05 10:21:30

您的问题是go()中的所有代码都是连续的。如果它是迭代的,您可以检查是否在该循环中触发事件或bool并中止go()。可以在SubscribeMouseLeftUp()上触发bool/事件。在您的情况下,这不能迭代地完成。在

您也许可以尝试在go()方法中添加触发器检查,虽然它不干净,但它可以完成任务,尽管它的效率非常低。在

第三,根据钩子和gui在线程中的工作方式,可以将go()卸载到线程中。在MouseDown上启动线程并在MouseUp上中止/杀死它。在

相关问题 更多 >

    热门问题