sikuli-driver team mailing list archive
-
sikuli-driver team
-
Mailing list archive
-
Message #47963
Re: [Question #671452]: Using a class to make many handlers for observing, but the handler gets triggered immediately regardless of onAppear results
Question #671452 on Sikuli changed:
https://answers.launchpad.net/sikuli/+question/671452
Description changed to:
I'm currently in the middle of a script used to observe many regions at
once, all pointed at IP camera feeds. The script is to see if any of the
screens shown on the feeds go dark at any given moment.
I've used a class to create all of my onAppear and observeInBackground
methods since they all follow the same process, and gave the __init__
arguments of 'self', 'name', and 'region'. I was hoping to make another
method that would be used as the handler for these onAppears called
'trigger_handler', that would alert us as to which region has been
triggered when it happens (see below).
def trigger_handler(self, event):
###
# This is the method that gets called whenever the onAppear observation is triggered. Health check will send with the
subject
line noting which screen is down and send both pictures
###
popup(self.name+" appears to be down, can you confirm?")
My idea was to reference this method as the handler in the onAppear
method (see below), but when doing so the handler triggers immediately
whether the onAppear is true or not.
def start_observe(self, reference):
###
# This is the method assigned to each region being observed that looks for its own reference image and calls its own event
handler when triggered
###
reference = str(self.region)+"_out"
self.region.onAppear(reference, self.trigger_handler())
self.region.observeInBackground(FOREVER)
I'm also pasting the class itself and the __init__ that directly follows just for reference, and also a couple of the class objects below that.
class event_handler():
###
# This is a class that contains all handlers for observation regions. The __init__ helps us define the name of the screen we are
currently observing,
# while the trigger_handler method is assigned to all objects of the class and gets called for that specific object when the
onAppear gets triggered
###
def __init__(self, name, region):
self.name = name
self.region = region
rr02_handler = event_handler("Reader Rail 2", rr02) ###(rr02 and rr08 are regions defined earlier on before the class.
rr08_handler = event_handler("Reader Rail 8", rr08)
def start_all_observe():
rr02_handler.start_observe(rr02_out)
Thank you so much for any help and advice, I am just totally stumped!
--
You received this question notification because your team Sikuli Drivers
is an answer contact for Sikuli.