<p>干杯!
也许是这样的</p>
<pre><code>import threading
def set_interval(func, sec):
def func_wrapper():
set_interval(func, sec)
func()
t = threading.Timer(sec, func_wrapper)
t.start()
return t
</code></pre>
<p>我们在主循环中调用上面的函数</p>
<p>将while循环内容包装到函数上:</p>
<pre><code>def take_photo:
goproCamera.take_photo()
goproCamera.downloadLastMedia()
</code></pre>
<p>现在,我们创建一个最初设置为False的标志,以避免创建多个线程。
注意,我在while循环之前做了这个。我们只需要一个起始值</p>
<pre><code>active = False
while(True):
switch.update()
if switch.fell:
print("Pressed, toggling value")
save = not save
if save: # we need to start taking photos.
if not active: # it is not active... so it is the first time it is being called or it has been toggled to save as True again.
photo_thread = set_interval(take_photo, 5) # grabbing a handle to the thread - photo_thread - so we can cancel it later when save is set to False.
active = True # marking as active to be skipped from the loop until save is False
else:
try: # photo_thread may not exist yet so I wrapped it inside a try statement here.
photo_thread.cancel() # if we have a thread we kill it
active = False #setting to False so the next time the button is pressed we can create a new one.
</code></pre>
<p>让我知道它是否有效。=)</p>