stop CanvasUpdater after window closes

ironpython
András Veres-Szentkirályi 2013-11-05 21:25:43 +01:00
rodzic 524afc6835
commit d0f674734a
1 zmienionych plików z 11 dodań i 3 usunięć

Wyświetl plik

@ -13,7 +13,7 @@ from pysstv.examples.pyaudio_sstv import PyAudioSSTV
from pysstv.sstv import SSTV from pysstv.sstv import SSTV
from itertools import repeat from itertools import repeat
from threading import Thread from threading import Thread
from Queue import Queue from Queue import Queue, Empty
import os import os
MODULE_MAP = pysstv_main.build_module_map() MODULE_MAP = pysstv_main.build_module_map()
@ -82,13 +82,20 @@ class CanvasUpdater(Thread):
Thread.__init__(self) Thread.__init__(self)
self.progress = progress self.progress = progress
self.queue = Queue() self.queue = Queue()
self.should_run = True
def stop(self):
self.should_run = False
def update_image(self, line=None): def update_image(self, line=None):
self.queue.put(line) self.queue.put(line)
def run(self): def run(self):
while True: while self.should_run:
self.progress.update_image(self.queue.get()) try:
self.progress.update_image(self.queue.get(timeout=0.5))
except Empty:
pass
class ProgressCanvas(Canvas): class ProgressCanvas(Canvas):
@ -155,6 +162,7 @@ def transmit_current_image(image, drawable, mode, vox, fskid):
root.mainloop() root.mainloop()
tm.stop() tm.stop()
tm1750.stop() tm1750.stop()
cu.stop()
finally: finally:
os.remove(png_fn) os.remove(png_fn)