Pyautogui: мне нужно двигать мышь вручную, чтобы pyautogui щелкнул

ПРИМЕЧАНИЕ. Моя проблема не в том, что он не щелкает, моя проблема в том, что он щелкает только после того, как я вручную перемещаю мышь.

Я использую библиотеку Python «pyautogui», и когда я запускаю такой код:

import pyautogui
pyautogui.FAILSAFE = True
while True:
    cash = pyautogui.locateOnScreen('cash.png',confidence=0.8)
    if cash != None:
        pyautogui.click(cash)

Он находит то, что ищет, но не нажимает на него, пока я не передвину мышь вручную.

Это происходит каждый раз, когда я пробую pyautogui.

Я попытался запустить ваш код с помощью PyCharm 2020.3 с Python 3.9 в Windows 10, и он отлично работает. Попробуйте добавить time.sleep(1) после pyautogui.click(cash), я думаю, может программа слишком часто щелкает в течение секунды?

Andrew Stone 25.12.2020 20:11

В качестве примечания, pyautogui.FAILSAFE по умолчанию — это True, поэтому вам не нужна эта строка.

Andrew Stone 25.12.2020 20:12

@AndrewStone Я знаю, что отказоустойчивость включена по умолчанию, я просто хотел убедиться, что она работает!

Oliverbigman 25.12.2020 23:30

Потрясающий! Рад, что смог помочь

Andrew Stone 26.12.2020 00:27
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
3 965
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Похоже, что Pyautogui отправляет слишком много запросов для обработки мышью, поэтому замедление ее путем добавления time.sleep(1) помогло.

Не знаю, была ли у кого-нибудь еще такая проблема, но я рад, что ее исправили!

Это может произойти из-за того, что вы не вставили координаты в свою функцию "click()". Если вы не вставите координаты, python щелкнет там, где находится указатель мыши. Если вы вставите координаты типа «щелчок (12, 35)», тогда python щелкнет по указанным вами координатам. Вы можете получить координаты вашего экрана любым графическим редактором, например Paint.

Вы объясняете ситуацию, но не решение.

mishsx 03.08.2021 15:16

Видите, если вы наберете только click(), то python щелкнет там, где находится указатель мыши. Но если вы скажете python щелкнуть по определенной координате x и координате y, например, click((x position)12, (y position)35), то python щелкнет по введенной вами маркировке позиции. Если у вас все еще есть сомнения, пожалуйста, спросите

EasyWay Coder 03.08.2021 17:01

Давайте посмотрим на ваш код: import pyautogui pyautogui.FAILSAFE = True while True: cash = pyautogui.locateOnScreen('cash.png',confidence=0.8) if cash != None: pyautogui.click(cash) Итак, вместо того, чтобы идти туда, вы можете открыть cash.png в краске, получить координаты xy в фоторедакторе и вставить их в функцию click() следующим образом: import pyautogui pyautogui.FAILSAFE = True while True: cash = "Your x co-ordinates", "Your y co-ordinates" if cash != None: pyautogui.click(cash)

EasyWay Coder 03.08.2021 17:18
>>> import pyautogui

>>> screenWidth, screenHeight = pyautogui.size() # Get the size of the primary monitor.

>>> currentMouseX, currentMouseY = pyautogui.position() # Get the XY position of the mouse.

>>> pyautogui.moveTo(100, 150) # Move the mouse to XY coordinates.

>>> pyautogui.click()          # Click the mouse.
>>> pyautogui.click(100, 200)  # Move the mouse to XY coordinates and click it.
>>> pyautogui.click('button.png') # Find where button.png appears on the screen and click it.

>>> pyautogui.move(0, 10)      # Move mouse 10 pixels down from its current position.
>>> pyautogui.doubleClick()    # Double click the mouse.
>>> pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad)  # Use tweening/easing function to move mouse over 2 seconds.

>>> pyautogui.write('Hello world!', interval=0.25)  # type with quarter-second pause in between each key
>>> pyautogui.press('esc')     # Press the Esc key. All key names are in pyautogui.KEY_NAMES

>>> pyautogui.keyDown('shift') # Press the Shift key down and hold it.
>>> pyautogui.press(['left', 'left', 'left', 'left']) # Press the left arrow key 4 times.
>>> pyautogui.keyUp('shift')   # Let go of the Shift key.

>>> pyautogui.hotkey('ctrl', 'c') # Press the Ctrl-C hotkey combination.

>>> pyautogui.alert('This is the message to display.') # Make an alert box appear and pause the program until OK is clicked.

В вашем случае используйте pyautogui.click(100, 200) # Move the mouse to XY

Ответ принят как подходящий

Что бы я сделал, вместо того, чтобы пойти

import pyautogui
pyautogui.FAILSAFE = True
while True:
    cash = pyautogui.locateOnScreen('cash.png',confidence=0.8)
    if cash != None:
        pyautogui.click(cash)

ты бы сделал

import pyautogui
pyautogui.FAILSAFE = True
while True:
    cash = pyautogui.locateOnScreen('cash.png',confidence=0.8)
    if cash != None:
    pyautogui.move(cash)
        pyautogui.click(cash)

ваша проблема в том, что программа просто собирается запустить щелчок, но она не знает, как на самом деле переместиться туда и ЧЕМ щелкнуть.

Другие вопросы по теме