| 14 | |
| 15 | |
| 16 | class Thread(QThread): |
| 17 | valueChange = pyqtSignal(int) |
| 18 | |
| 19 | def __init__(self, *args, **kwargs): |
| 20 | super(Thread, self).__init__(*args, **kwargs) |
| 21 | self._isPause = False |
| 22 | self._value = 0 |
| 23 | self.cond = QWaitCondition() |
| 24 | self.mutex = QMutex() |
| 25 | |
| 26 | def pause(self): |
| 27 | self._isPause = True |
| 28 | |
| 29 | def resume(self): |
| 30 | self._isPause = False |
| 31 | self.cond.wakeAll() |
| 32 | |
| 33 | def run(self): |
| 34 | while 1: |
| 35 | self.mutex.lock() |
| 36 | if self._isPause: |
| 37 | self.cond.wait(self.mutex) |
| 38 | if self._value > 100: |
| 39 | self._value = 0 |
| 40 | self._value += 1 |
| 41 | self.valueChange.emit(self._value) |
| 42 | self.msleep(100) |
| 43 | self.mutex.unlock() |
| 44 | |
| 45 | |
| 46 | class Window(QWidget): |