Question #156488 on Sikuli changed:
https://answers.launchpad.net/sikuli/+question/156488

RaiMan posted a new comment:
--- the print statements?
running the script successfully gives you some intermediate information, about 
what the function is doing and shows you the intermediate content of the 
variables in the IDE's message area. You might just delete the print 
statements. And you might eliminate some intermediate variables:

def sleepUntil(h, m, s=0):
 a = time.localtime()
 at = time.mktime(a)
 bt = time.mktime(time.struct_time((a[0], a[1], a[2], h, m, s, 0, 0, a[-1])))
 wait(bt-at)

I left it "so complex", to give you a chance to understand, what is
happening, step by step.

--- this is the shortest possible version with the same effect (no print out) - 
all on one line!
def sleepUntil(h, m, s=0): a=time.localtime(); 
wait(time.mktime(time.struct_time((a[0], a[1], a[2], h, m, s, 0, 0, a[-1]))) - 
time.mktime(a))

and the usage still is
sleepUntil(14, 30)

Though this is valid Python, you should not want it ;-)

BTW: using reusable functions is the THE tool to HIDE complexity. Sikuli
script is a good example: You might not imagine how many statements,
functions and other programming constructs have been setup to make it
possible for you to say: click on that image that I can see on the
screen - and it works ;-)

Principally, the developers could integrate a waitUntil(some-hour, some-
minute) into Sikuli script (I do not think, they will do it ;-) So you
would not see the function, but it would be there. So complexity depends
on from where you are looking ;-)

--- alternative with no function:
every time, you want to wait until a specific time (e.g. 14:30) of day, you 
could just write:
a=time.localtime(); wait(time.mktime(time.struct_time((a[0], a[1], a[2], 14, 
30, 0, 0, 0, a[-1]))) - time.mktime(a))

So no reusable function, and no nice sleepUntil(14, 30) :-(

So using functions is your decision based on your judgement about the
effort / benefit ratio.

--- one more thing:
the function does not check, whether the given time is in the future. If it is 
in the past, the script will fail with an error. Just try it and see what 
happens.

Always welcome.

-- 
You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.

_______________________________________________
Mailing list: https://launchpad.net/~sikuli-driver
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~sikuli-driver
More help   : https://help.launchpad.net/ListHelp

Reply via email to