2017-01-31 2 views
0

Mein Problem ist, dass ich nicht weiß, wie ich meinen Code in einer bestimmten Region ausführen lassen kann - es scannt stattdessen den gesamten Bildschirm. Hier ist mein schäbiger Code, wenn irgendjemand es sehen könnte.Wie setze ich eine Region für ein Skript? Sikuli

running = True 

def runHotkey(event): 
global running 
running = True 

Env.addHotkey(Key.F1, KeyModifier.CTRL, runHotkey) 
Settings.MoveMouseDelay = 0 
Region(Region(23,54,731,778)) 
while exists("1485901173411.png") and running: 

    click("1485900597943.png")  
    if exists(Pattern("1485900218788.png").similar(0.95)): 
     type(Key.CTRL + "L") 
     wait(1) 
     type(Key.ALT + Key.ENTER) 
     wait(10) 
    else: 
     click("1485901173411.png") 
     wait(7) 

Antwort

0

Wie Sie gesagt haben, müssen Sie, um den Suchbereich zu begrenzen, nach Mustern innerhalb einer vordefinierten Region suchen. Es gibt wenige Möglichkeiten, eine Region zu definieren.

Mit Koordinaten

Zum Beispiel, wenn Sie nur in der oberen Hälfte des Bildschirms sehen möchten, können Sie tun:

topHalfScreen = Region(x, y, w, h) 

und dann:

targetPattern = topHalfScreen.find("targetPattern.png") 

hier Sie können auch getScreen().getBounds().width und getScreen().getBounds().height verwenden, um die Bildschirmgröße zu bestimmen.

Muster Mit

So ziemlich die gleiche Idee, sondern definieren Siebfläche Sie nach einem Muster suchen, die die, die Sie finden möchten enthält und dann im Inneren suchen.

relative Muster Mit

Auf diese Weise können für ein Muster an der Stelle eines anderen Musters auf Basis suchen. Zum Beispiel:

initialPattern = find("pattern.png") 
actualRegion = Region(initialPattern.x + x1, initialPattern.y + y1, initialPattern.w + w1, initialPattern.h + h1) 
Verwandte Themen