import sys from PyQt5.QtCore import QThread from PyQt5.QtQml import QQmlApplicationEngine from PyQt5.QtWidgets import QApplication from gui import GUI from webcam_controller import WebcamControl if __name__ == '__main__': # create the main Qt application objects app = QApplication(sys.argv) engine = QQmlApplicationEngine() context = engine.rootContext() webcam_control = WebcamControl() webcam_control_thread = QThread() webcam_control.moveToThread(webcam_control_thread) webcam_control_thread.started.connect(webcam_control.start) # start the main thread webcam_control_thread.start() gui = GUI() # make GUI signal connections webcam_control.status_signal.connect(gui.handle_connection_status) webcam_control.webcammanager.video.connect(gui.handle_image) gui.webcam_connect.connect(webcam_control.command_connect) context.setContextProperty("gui", gui) engine.addImageProvider("webcam", gui.webcam_provider) app.setQuitOnLastWindowClosed(False) app.lastWindowClosed.connect(webcam_control.shutdown) webcam_control.shutdown_event.connect(app.quit) engine.load('main.qml') status = app.exec_() sys.exit(status)