ПРИМЕЧАНИЕ. Моя проблема не в том, что он не щелкает, моя проблема в том, что он щелкает только после того, как я вручную перемещаю мышь.
Я использую библиотеку Python «pyautogui», и когда я запускаю такой код:
import pyautogui
pyautogui.FAILSAFE = True
while True:
cash = pyautogui.locateOnScreen('cash.png',confidence=0.8)
if cash != None:
pyautogui.click(cash)
Он находит то, что ищет, но не нажимает на него, пока я не передвину мышь вручную.
Это происходит каждый раз, когда я пробую pyautogui.
В качестве примечания, pyautogui.FAILSAFE
по умолчанию — это True
, поэтому вам не нужна эта строка.
@AndrewStone Я знаю, что отказоустойчивость включена по умолчанию, я просто хотел убедиться, что она работает!
Потрясающий! Рад, что смог помочь
Похоже, что Pyautogui отправляет слишком много запросов для обработки мышью, поэтому замедление ее путем добавления time.sleep(1) помогло.
Не знаю, была ли у кого-нибудь еще такая проблема, но я рад, что ее исправили!
Это может произойти из-за того, что вы не вставили координаты в свою функцию "click()". Если вы не вставите координаты, python щелкнет там, где находится указатель мыши. Если вы вставите координаты типа «щелчок (12, 35)», тогда python щелкнет по указанным вами координатам. Вы можете получить координаты вашего экрана любым графическим редактором, например Paint.
Вы объясняете ситуацию, но не решение.
Видите, если вы наберете только click(), то python щелкнет там, где находится указатель мыши. Но если вы скажете python щелкнуть по определенной координате x и координате y, например, click((x position)12, (y position)35), то python щелкнет по введенной вами маркировке позиции. Если у вас все еще есть сомнения, пожалуйста, спросите
Давайте посмотрим на ваш код: 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)
>>> 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)
ваша проблема в том, что программа просто собирается запустить щелчок, но она не знает, как на самом деле переместиться туда и ЧЕМ щелкнуть.
Я попытался запустить ваш код с помощью PyCharm 2020.3 с Python 3.9 в Windows 10, и он отлично работает. Попробуйте добавить
time.sleep(1)
послеpyautogui.click(cash)
, я думаю, может программа слишком часто щелкает в течение секунды?