使用pyautogui在后台控制应用程序

问题描述 投票:0回答:2

免责声明-我是编码新手,不久前才开始学习,所以不要因为代码而评判我,谢谢。

我为我的游戏制作了一个机器人来执行一些特定的任务,但问题是它使用 pyautogui 和 pytessaect 但为了运行程序,游戏应该在屏幕上意味着如果我需要的话我无法在系统上执行任何操作要运行的程序。

所以我想知道是否有任何方法可以在后台运行游戏代码,以便我可以同时使用我的系统

这是代码

import pyautogui

pyautogui.FAILSAFE=False

import time

import keyboard

from pyautogui import *



import pytesseract as tess

from pygame.event import get_grab

tess.pytesseract.tesseract_cmd = r'C:\Users\arshi_k8rjg1x\AppData\Local\Tesseract-OCR\tesseract'
from PIL import Image, ImageGrab

a = input("Name of pokemon:")

name="VS. "+"Wild "+a+'\n'

b = input("Name of pokemon:")

name1="VS. "+"Wild "+b+'\n'

c = input("Name of pokemon:")

name2="VS. "+"Wild "+c+'\n'

time.sleep(3)




def movement():
    while pyautogui.pixel(1248, 496)[0] != 27 and [1] != 25 and [2] != 27:

        pyautogui.keyDown('D')

        time.sleep(0.05)
        pyautogui.keyUp('D')

        time.sleep(0.05)
        pyautogui.keyDown('A')
        time.sleep(0.05)
        pyautogui.keyUp('A')

    img = ImageGrab.grab(bbox=(831, 320, 1100, 350))
    text = tess.image_to_string(img)
    

    if text == name or text==name1 or text==name2:
        time.sleep(6)
        attack()

    else:
        pyautogui.keyDown('4')
        time.sleep(0.5)
        pyautogui.keyUp('4')
        time.sleep(2)
        movement()



def attack():

    pyautogui.keyDown('1')
    time.sleep(0.3)
    pyautogui.keyUp('1')
    time.sleep(0.3)
    pyautogui.keyDown('3')
    time.sleep(0.3)
    pyautogui.keyUp('3')
    time.sleep(9)
    pyautogui.keyDown('3')
    time.sleep(0.3)
    pyautogui.keyUp('3')
    time.sleep(0.3)
    pyautogui.keyDown('1')
    pyautogui.keyUp('1')



    movement()
movement()
python pyautogui python-tesseract
2个回答
0
投票

Pyautogui 模拟系统的实际输入。例如,当您运行

pyautogui.press('enter')
时,它与您手动按下键盘上的
Enter
相同。因此,pyautogui 无法在后台玩游戏,因为它将输入发送到系统本身而不是特定窗口。如果您想将输入发送到特定窗口,同时仍将其保留在后台,则过程会复杂得多。你可以看看这个问题关于这个问题。


0
投票

您可以在 pyautogui 程序之前将系统环境

DISPLAY
指定给您的显示器之一,例如:

import os
os.environ["DISPLAY"] = ":0"

确保

:0
存在。 (您可以在打开的屏幕终端之一中通过
echo $DISPLAY
检查以获取值。

© www.soinside.com 2019 - 2024. All rights reserved.