【问题标题】:Improve pyautogui.press speed提高 pyautogui.press 的速度
【发布时间】:2019-08-05 15:44:38
【问题描述】:

我正在为 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()

【问题讨论】:

    标签: python ocr cv2 pyautogui


    【解决方案1】:

    查看脚本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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      • 2011-06-14
      相关资源
      最近更新 更多