在python3中反转鼠标?

问题描述

使用 pynput + pyautogui 我写了这个意大利面。用户的鼠标光标会覆盖倒置的光标,因此我怀疑我可能需要以某种方式通过此应用程序路由所有鼠标输入,假设这是实现此目的的最佳方法,我对此表示高度怀疑。我看过不同的库,主要是鼠标,它们做了同样的事情,所以我怀疑它是基于库的。无论如何,我是否可以暂时阻止用户的鼠标并将其路由到应用程序中,或者这是完全错误方法吗?

编辑:这可能是由于变量计算错误造成的。不太确定什么是正确的,仍在弄清楚...

def callback_Mouse(x,y):
    global Busy
    global OldX
    global OldY
    mousecontroller = Controller()
    if Listening == False:
        return False
    if Busy == True:
        print("Busy")
        return
    Busy = True
    MouseX = (x - OldX)
    MouseY = (y - OldY)
    print("x: ",x)
    print("y: ",y)
    print("MouseX: ",MouseX,"MouseY: ",MouseY)
    InvertedX = MouseX - (MouseX * 2)
    InvertedY = MouseY - (MouseY * 2)
    print("InvertedX: ",InvertedX,"InvertedY: ",InvertedY)
    mousecontroller.move(InvertedX,InvertedY)
    OldX,OldY = x,y
    print(OldX,OldY)
    Busy = False

EDIT2:完全重做这部分代码,只使用鼠标(和 pyautogui 来抓取屏幕大小),鼠标现在倒置工作,但是它非常紧张,我不知道为什么。 (编辑:减少了睡眠时间,现在看起来好一点)在游戏中也试过这个,正如预期的那样,它导致相机到处乱飞和抖动,不知道如何让它在游戏中工作。

def MouseCallback():
    global Listening
    global OldX
    global OldY
    while Listening == True:
        x,y = mouselib.get_position()
        DifferenceX = OldX - x
        DifferenceY = OldY - y
        InvertedX = OldX + DifferenceX
        InvertedY = OldY + DifferenceY
        if InvertedX >= screenWidth:
            InvertedX = screenWidth - 3
        elif InvertedX < 0:
            InvertedX = 3
        if InvertedY >= screenHeight:
            InvertedY = screenHeight - 3
        elif InvertedY < 0:
            InvertedY = 3
        mouselib.move(InvertedX,InvertedY,absolute=True)
        OldX,OldY = mouselib.get_position()
        time.sleep(0.001)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)