为什么我的函数会触发多次?

Why is my function triggering multiple times?

此代码:

  1. 寻找图像a
  2. 如果找到 a,它会尝试为数组中的任何图像找到匹配项 image_list
  3. 如果它在 image_list 中找到图像,它会查找 e
  4. 如果找到 e,它会记录它并将鼠标移动到 x, y 检查像素颜色,然后在找到匹配项时单击。

这就是我的问题所在,我的 avoidLog() 函数每次点击被调用 2-3 次。我添加了 print("click") 来检查它是否真的在点击,它是否在正确的时间点击,但由于某种原因,我的日志不止一次被触发。

记录正确,只是次数为奇数。

我知道 python 在我的示例中在单个线程中运行,所以我不确定为什么它会循环返回并且 没有 单击。如果它多次单击并记录多次,对我来说会更有意义。

import pyautogui as py

def avoidLog():
   avoidLog = open('Avoided.txt', 'a')
   avoidLog.write("Found at: " + str(f) + " at: " + str(skipTime))
   avoidLog.write("\n")
   avoidLog.close()

image_list = []
while True:
        if py.locateOnScreen('a.jpg') != None:                       
               for image in image_list:                                          
                    found = py.locateCenterOnScreen(image)

                    if found != None:
                         skipTrigger = py.locateOnScreen('e.jpg')

                         if skipTrigger != None:
                              avoidLog()
                              py.moveTo(x, y)                                                                                           
                              r = py.pixelMatchesColor(x,y, (r,g,b))

                              if r == True:
                                   py.sleep(2)
                                   print("click")
                                   py.click()
                                   break
                                
只要找到 e.jpg,就会调用

avoidLog()。但是,仅当 pixelMatchesColor 为 True

时才会调用 py.click()