Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止函数在while循环中被多次调用-PYTHON_Python_Pywin32_Pyautogui - Fatal编程技术网

如何防止函数在while循环中被多次调用-PYTHON

如何防止函数在while循环中被多次调用-PYTHON,python,pywin32,pyautogui,Python,Pywin32,Pyautogui,我想做的是什么?使用坐标和pywin32自动化游戏 Expected result: 预期结果: 使用pyautogui.pixel(489209)[0]获取RGB颜色的R值,并检查R值是否与我要查找的颜色相对应,如果符合要求,请单击鼠标 Drawback result: 退税结果: 代码运行后,循环开始工作,单击事件执行,直到if语句运行到else语句中。这导致了不必要和不必要的时间消耗。无论如何,在while循环中,我只能执行click()方法一次 import keyboard impor

我想做的是什么?使用坐标和pywin32自动化游戏

Expected result: 预期结果: 使用pyautogui.pixel(489209)[0]获取RGB颜色的R值,并检查R值是否与我要查找的颜色相对应,如果符合要求,请单击鼠标

Drawback result: 退税结果: 代码运行后,循环开始工作,单击事件执行,直到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, 0) time.sleep(0.1) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 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) 输入键盘 导入pyautogui 导入时间 导入win32api、win32con def单击(x,y): win32api.SetCursorPos((x,y)) win32api.mouse_事件(win32con.MOUSEEVENTF_LEFTDOWN,0,0) 睡眠时间(0.1) win32api.mouse_事件(win32con.MOUSEEVENTF_LEFTUP,0,0) 当不使用键盘时。按下_('q'): 如果pyautogui.pixel(686172)[0]!=255: 打印(“他没有看着你,点击鼠标”) 点击(680694) 其他: 打印(“他正看着你,再次单击”) 点击(680694)
可以在循环设置为True之前添加bool变量,并将click()放入if,其中条件是该bool变量。使用click()一次后,将变量设置为False,使条件为False,并且不会执行click()

我建议通过使用标志变量来修改代码,如下所示:

当不使用键盘时。按下_('q'):


如果您想避免在其他地方执行该操作,请不要在while循环上执行该操作?是的,我也尝试过,但问题是当bool变量变为False时while循环运行,并且if语句永远不会再次执行。
    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)