Skip to content

Instantly share code, notes, and snippets.

@waspinator
Created November 30, 2016 17:06
Show Gist options
  • Save waspinator/b1729031e2d5c60d4d9dbe48d88c54c5 to your computer and use it in GitHub Desktop.
Save waspinator/b1729031e2d5c60d4d9dbe48d88c54c5 to your computer and use it in GitHub Desktop.
pyqt thread example
import random
import sys
from PyQt5 import QtWidgets, uic, QtCore, QtGui
class Worker(QtCore.QThread):
data = QtCore.pyqtSignal(dict)
def __init__(self, parent=None):
super(Worker, self).__init__(parent)
self._stopped = True
self._mutex = QtCore.QMutex()
def stop(self):
self._mutex.lock()
self._stopped = True
self._mutex.unlock()
def run(self):
self._stopped = False
for count in range(1000):
if self._stopped:
break
self.msleep(50)
data = {
'message': 'running %d [%d]' % (
count, QtCore.QThread.currentThreadId()),
'time': QtCore.QTime.currentTime(),
'items': [1, 2, 3],
'progress': random.randrange(101)
}
self.data.emit(data)
class HyperScanApp(QtWidgets.QMainWindow):
_serial_connected = False
_serial_connecting = False
_current_serial_ports = None
_start_scan = False
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
self._worker = Worker()
self._worker.started.connect(self.worker_started_callback)
self._worker.finished.connect(self.worker_finished_callback)
self._worker.data.connect(self.worker_data_callback)
self.ui = uic.loadUi('progress_bar.ui', self)
self.ui.progressBar.setValue(random.randrange(101))
self.ui.show()
self._worker.start()
def worker_started_callback(self):
pass
def worker_finished_callback(self):
pass
def worker_data_callback(self, data):
self.ui.progressBar.setValue(data['progress'])
print(data['progress'])
def main():
app = QtWidgets.QApplication(sys.argv)
HyperScanApp()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment