from PyQt5.QtCore import QMutex, QObject, QPointF, pyqtSignal, pyqtSlot from PyQt5.QtChart import QAbstractSeries from PyQt5.QtGui import QColor, QPixmap from PyQt5.QtQuick import QQuickImageProvider class GUI(QObject): webcam_status = pyqtSignal(bool, arguments=['connected']) webcam_refresh = pyqtSignal(QPixmap, arguments=['image']) webcam_connect = pyqtSignal(bool) def __init__(self): super(GUI, self).__init__() self.webcam_provider = WebcamProvider() def handle_connection_status(self, connected): self.webcam_status.emit(connected) def handle_image(self, image): self.webcam_provider.set_image(image) self.webcam_refresh.emit(image) @pyqtSlot(bool) def cmd_connect(self, connected): self.webcam_connect.emit(connected) class WebcamProvider(QQuickImageProvider): def __init__(self): super(WebcamProvider, self).__init__(QQuickImageProvider.Pixmap) self.next_image = QPixmap(1280, 720) def requestPixmap(self, requested_id, requested_size): return self.next_image, self.next_image.size() def set_image(self, image): self.next_image = image