我已经定义了一个sikuli模块,用于在区域内出现某些内容时点击图像。
# observer.py
from sikuli import *
class Observer:
# When "observedImage" appears inside "region", double click on "reactImage"
def __init__(self, region, observedImage, reactImage):
self.region = region
self.observedImage = observedImage
self.reactImage = reactImage
def start(self):
self.region.onAppear(self.observedImage, self.appearHandler)
self.region.observe(FOREVER, background = True)
def appearHandler(self, event):
doubleClick(self.reactImage)
event.repeat()
def stop(self):
self.region.stopObserver()
以下是如何使用它:
import observer
import time
observer.Observer(Region(111,222,333,444), "imageToBeDetected1.png", "imageToBeClicked1.png").start()
observer.Observer(Region(555,666,66,666), "imageToBeDetected2.png", "imageToBeClicked2.png").start()
while True:
print('waiting')
time.sleep(1)
上述代码的问题是当imageToBeDetected1
和imageToBeDetected2
分别出现在Region(111,222,333,444)
和Region(555,666,66,666)
时,我的鼠标会在imageToBeClicked1
和imageToBeClicked2
之间移动imageToBeDetected1
。我希望在这种情况下只能点击imageToBeDetected2
。
imageToBeDetected1
和imageToBeDetected2
分别出现在Region(111,222,333,444)
和Region(555,666,66,666)
时, imageToBeDetected1
应该被忽略。
如何修改我的代码,以使imageToBeDetected2
的优先级高于a
?
或者有更好的方法来观察使用sikuli的多个图像吗?