首页 > 解决方案 > 为什么 pyautogui 不会在绘图软件中突出显示和使用键盘动作?(这可以解决吗)

问题描述

我正在使用像素工作室来制作一些动画。我能够自动化它。但是,pyautogui 按键和鼠标拖动交互不起作用。点击有效,但拖动以突出显示和键盘箭头按键无效。我在我的桌面上测试了代码——点击和键盘移动和拖动以突出显示所有工作正常,但是一旦我进入绘图系统,只有点击可以。是什么导致了这个问题,有没有办法解决它?谢谢!(代码如下所示供参考)

# auto twitch animation for da rest of it

import pyautogui as pag
import keyboard

# failsafe pls dont mess up
while True:
    if keyboard.is_pressed("q"):
        break
    else:
        pag.sleep(3)
        # click gear 2355 50
        pag.leftClick(2355, 50)
        pag.sleep(1)
        # clone frame 1131 1039
        pag.leftClick(1131, 1039)
        pag.sleep(1)
        # click layer 2 twice 242 1387
        pag.leftClick(242, 1387)
        pag.sleep(1)
        pag.leftClick(242, 1387)
        pag.sleep(1)
        # highlight clouds - two right 582 109 - 2414 494 leftClick, dragTo left (x,y,t,button="left)
        pag.moveTo(582, 109)
        pag.sleep(1)
        pag.mouseDown(button="left")
        pag.moveTo(2414, 494, 1)
        pag.mouseUp(button="left")
        pag.sleep(1)
        pag.press("right")
        pag.sleep(1)
        pag.press("right")
        pag.sleep(1)
        # highlight bottom cloud - two left 1013 973 - 111 803
        pag.moveTo(1013, 973)
        pag.sleep(1)
        pag.mouseDown(button="left")
        pag.moveTo(111, 803, 1)
        pag.mouseUp(button="left")
        pag.sleep(1)
        pag.press("left")
        pag.sleep(1)
        pag.press("left")
        pag.sleep(1)
        # plane four left 1029 474 - 112 622
        pag.moveTo(1029, 474)
        pag.sleep(1)
        pag.mouseDown(button="left")
        pag.moveTo(112, 622, 1)
        pag.mouseUp(button="left")
        pag.sleep(1)
        pag.press("left")
        pag.sleep(1)
        pag.press("left")
        pag.sleep(1)
        pag.press("left")
        pag.sleep(1)
        pag.press("left")
        pag.sleep(1)
        # plane four right 1450 656 - 2402 821
        pag.moveTo(1450, 656)
        pag.sleep(1)
        pag.mouseDown(button="left")
        pag.moveTo(2402, 821, 1)
        pag.mouseUp(button="left")
        pag.sleep(1)
        pag.press("right")
        pag.sleep(1)
        pag.press("right")
        pag.sleep(1)
        pag.press("right")
        pag.sleep(1)
        pag.press("right")
        pag.sleep(1)

标签: pythonhighlightpyautoguimousemoveinterfacing

解决方案


使用 pydirectinput 库。如果其他人有这个问题 - 这是由于 pyautogui 模拟按键和鼠标按钮的旧系统。它使其不适用于某些游戏和程序,尤其是较新的游戏和程序。安装 pydirectinput 库,将其输入到代码中,并将 pyautogui 前缀替换为 pydirectinput。

import pyautogui
import pydirectinput

### instead of pyautogui.press("left") use
pydirectinput.press("left")

推荐阅读