如何解决如何防止一个函数在 while 循环中被多次调用 - PYTHON
我想做的是什么?使用坐标和 pywin32 自动化游戏。
Expected result:
获取使用 pyautogui.pixel(489,209)[0] 的 RGB 颜色值的 R 值并检查 R 值是否与我要查找的值相对应,如果满足要求执行鼠标点击。
Drawback result:
一旦代码运行 while 循环开始工作并且单击事件执行,直到 if 语句运行到 else 语句。这导致了不必要的和不必要的耗时。无论如何我只能在这个 while 循环中执行一次 click() 方法。
import keyboard import pyautogui import time import win32api,win32con def click(x,y): win32api.SetCursorPos((x,y)) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0) time.sleep(0.1) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0) while not keyboard.is_pressed('q'): if pyautogui.pixel(686,172)[0] != 255: print("he is not looking at you,click the mouse") click(680,694) else: print("he is looking at you,click again") click(680,694)
解决方法
您可以在设置为 True 的循环之前添加一个 bool 变量,并将 click() 放入 if 中,其中条件是该 bool 变量。使用一次 click() 后,将变量设置为 False,因此条件为 False 并且不会执行 click()
,我建议通过使用标志变量来修改这样的代码:
虽然不是 keyboard.is_pressed('q'):
flag=True
if (pyautogui.pixel(686,172)[0] != 255 and flag==True):
print("he is not looking at you,click the mouse")
click(680,694)
flag=False
else:
print("he is looking at you,click again")
click(680,694)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。