sikuli-driver team mailing list archive
-
sikuli-driver team
-
Mailing list archive
-
Message #14922
Re: [Question #215490]: Dynamically capture symbols and search them --- all this in a loop
Question #215490 on Sikuli changed:
https://answers.launchpad.net/sikuli/+question/215490
Ben gave more information on the question:
I decided to complete Only 1 surfbar, the easy surfbar, and I'll
research for the rest. Could you at least help me with the easysurfbar
and I'll go away... I have 2 questions, and the other question, I
started a new thread on "When Images don't match" which I await an
answer on a fix. My main question though is, how to get the easysurfbar
to repeat from the beginning? Here is what I have:
# --------------------------------------------
# functions to be used in different situations
def captureSymbol(i = 0):
r = other[i]
x = r.x + sbMarginLeftRight
w = r.w - 2 * sbMarginLeftRight
y = r.y + sbMarginTopBottom
h = r.h - 2 * sbMarginTopBottom
r = Region(x, y, w, h)
r.highlight(1)
return capture(r)
def captureLeftSmallest():
# capture the image to search
# we have to try to get the smallest capture possible
# since the probe and the target have different positions
# this can be set fixed, if it is always the same
# find the bottom of image
greyBelow = "1354183324452.png"
g = left.find(greyBelow)
#g.highlight(1)
while True:
g1 = g.above(sbHeight-g.y)
g1.x -= 4; g1.w += 8
g1 = g1.exists(greyBelow)
if not g1: break
g = g1
#g.highlight(1)
b = g.y
# find the left side of image
greyLeft = "1354183672313.png"
g = left.find(greyLeft)
#g.highlight(1)
while True:
g1 = g.right(left.w - g.x)
g1.y -= 4; g1.h += 8
g1 = g1.exists(greyLeft)
if not g1: break
g = g1
#g.highlight(1)
l = g.x + g.w
# define the smallest possible image region
symbol = Region(l, b - 60, 50, 60)
#symbol.highlight(3)
return capture(symbol)
def checkCells(imgSymbol, start = 0):
# find the cell containing the symbol
match = None
for i in range(start, len(other)):
if other[i].exists(imgSymbol, 0):
match = other[i]
break
if not match: return None
match.highlight(1)
return match
# end function area
# ------------------------------------------------------------
# ----------------------- start of main workflow -------------
# this is based on surfbar9
# to run this script, surfbar9 must be visible on the screen
#Wait for counter on Surfbar to reach Zero
wait(10)
#Mouse speed
Settings.MoveMouseDelay = 0
# find the position
imgBase = "1354267496167-1.png"
fix = find(imgBase)
fix.highlight(1)
# get the symbol
rsym = Region(fix.x + fix.w + 8, fix.y + 14, 35, 35)
symbol = capture(rsym)
rsym.highlight(1)
# get the surfbar
sbLeft = fix.right().find("1354267650780.png")
sbLeft.highlight(1)
sbHeight = 45
sbWidth = 330
sb = Region(sbLeft.x + 4, sbLeft.y + 3, sbWidth, sbHeight)
sb.highlight(1)
sbMarginTopBottom = 20
sbMarginLeftRight = 20
# setup the regions for the others
numCells = 4
oWidth = (sb.w)/4
other = []
for i in range(numCells):
x = sb.x + i*oWidth - 4
other.append(Region(x, sb.y, oWidth+8, sbHeight))
for r in other:
pass
r.highlight(1)
found = checkCells(symbol)
if not found: print "not found"; exit(1)
click(found)
#I Need code to repeat this script right here Below
--
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.