class TimeDisplayer(QObject): timeUpdated = Signal(str) run = False def __init__(self, parent=None): super(TimeDisplayer, self).__init__(parent) self.lock = Lock() def run(self): self.run = True while self.run: self.lock.acquire() now = datetime.now() self.timeUpdated.emit(now.strftime("%H %M %S")) time.sleep(0.2) now = datetime.now() self.timeUpdated.emit(now.strftime("%H:%M:%S")) self.lock.release() time.sleep(0.8) @Slot() def stop(self): self.lock.acquired() self.run = False self.lock.release()