class MainWindow(QMainWindow, Ui_MainWindow): updGUI = pyqtSignal() def __init__(self, camera, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) self.camera = camera self.logo = LogoWidget(self, self.logoLayout.parent().width(), self.logoLayout.parent().height()) self.logoLayout.addWidget(self.logo) self.logo.setVisible(True) self.updGUI.connect(self.updateGUI) self.cameraCheck.stateChanged.connect(self.showCameraWidget) self.colorFilterCheck.stateChanged.connect(self.showColorFilterWidget) self.cameraWidget = CameraWidget(self) self.colorFilterWidget = ColorFilterWidget(self) self.cameraCommunicator = Communicator() self.colorFilterCommunicator = Communicator() self.trackingCommunicator = Communicator() self.playButton.clicked.connect(self.playClicked) self.playButton.setCheckable(True) def getCamera(self): return self.camera def setCamera(self, camera): self.camera = camera def setAlgorithm(self, algorithm): self.algorithm = algorithm def getAlgorithm(self): return self.algorithm def updateGUI(self): self.cameraWidget.imageUpdate.emit() self.colorFilterWidget.imageUpdate.emit() def playClicked(self): if self.playButton.isChecked(): icon = QtGui.QIcon() self.playButton.setText("Stop Code") self.playButton.setStyleSheet("background-color: #ec7063") icon.addPixmap(QtGui.QPixmap(":/images/stop.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.playButton.setIcon(icon) self.algorithm.play() else: icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap(":/images/play.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.playButton.setIcon(icon) self.playButton.setText("Play Code") self.playButton.setStyleSheet("background-color: #7dcea0") self.algorithm.stop() def showCameraWidget(self, state): if state == Qt.Checked: self.cameraWidget.show() else: self.cameraWidget.close() def closeCameraWidget(self): self.cameraCheck.setChecked(False) def showColorFilterWidget(self, state): if state == Qt.Checked: self.colorFilterWidget.show() else: self.colorFilterWidget.close() def closeColorFilterWidget(self): self.colorFilterCheck.setChecked(False) def closeEvent(self, event): self.algorithm.kill() self.colorFilterWidget.closeEvent(event) self.closeColorFilterWidget() self.closeCameraWidget() self.camera.client.stop() event.accept()