提高 pyautogui.press 速度

Improve pyautogui.press speed

我正在为 10fastfingers.com 编写一个自动打字机器人。有效。

我正在使用 pytesseract 库查找文本,然后我使用 pyautogui 按键。 我承认pyautogui.press没那么快

而且我找到了类似 pyautoguide.press 但速度很快的东西。 喜欢this video

from PIL import Image
import pyautogui
import time
import cv2
import pytesseract


class Cordinates():
    textbox = (80, 275)
    replayBtn = (800,450)
    whereitype = (250,460)
def restartGame():
    pyautogui.click(Cordinates.replayBtn)


def main():
    restartGame()
    time.sleep(0.5)
    pyautogui.click(Cordinates.whereitype)
    while True:
        pyautogui.screenshot('image.png')
        img = cv2.imread("image.png")
        crop_image = img[320:370, 80:940]
        cv2.imshow("cropped", crop_image)
        cv2.imwrite('cropped.png',crop_image)
        text = pytesseract.image_to_string(crop_image, lang='eng')
        for c in text:
            print(c)
            if c == 'enter':
                    c=' '
            pyautogui.press(c)
            if pyautogui.position() == (1, 1):
                exit()
        pyautogui.press(' ')

main()

查看脚本 https://github.com/asweigart/pyautogui/blob/master/pyautogui/init.py pyautogui.press,默认使用模块中全局设置的0.1秒PAUSE

def press(keys, presses=1, interval=0.0, pause=None, logScreenshot=None, _pause=True):
    """Performs a keyboard key press down, followed by a release.
    ...
    ...
    _autoPause(pause, _pause)

_autoPause:

def _autoPause(pause, _pause):
    """If `pause` is not `None`, then sleep for `pause` seconds.
    If `_pause` is `True`, then sleep for `PAUSE` seconds (the global pause setting).
    This function is called at the end of all of PyAutoGUI's mouse and keyboard functions. Normally, `_pause`
    is set to `True` to add a short sleep so that the user can engage the failsafe. By default, this sleep
    is as long as `PAUSE` settings. However, this can be override by setting `pause`, in which case the sleep
    is as long as `pause` seconds.
    """
    if pause is not None:
        time.sleep(pause)
    elif _pause:
        assert isinstance(PAUSE, int) or isinstance(PAUSE, float)
        time.sleep(PAUSE)

PAUSE

PAUSE = 0.1 # The number of seconds to pause after EVERY public function call. Useful for debugging.

如您所见,如果 press 中的暂停是 None,默认情况下,它会恢复为 0.1 秒 PAUSE

您可以通过设置较低的暂停率来覆盖它。 pyautogui.press(c, pause = 0.05)