import sys from PyQt6 import QtCore from PyQt6.QtCore import QByteArray from PyQt6.QtGui import QImage, QPixmap from PyQt6.QtWidgets import QMainWindow, QApplication from Image import Ui_MainWindow from utils.Msg import KillMsg, Msg, ImageArgMsg, BMMsg from ZMQReceiver import ZMQReceiver from config import VIDEO_HEIGHT, VIDEO_WIDTH from nodes.Node import Node class Adv(QMainWindow, Ui_MainWindow): def __init__(self, p: Node, parent=None): super(Adv, self).__init__(parent) self.p = p self.setupUi(self) zmq_receiver = ZMQReceiver(self) zmq_receiver.zmq_event.connect(self.on_zmq_event) zmq_receiver.start() def on_zmq_event(self, msg: QByteArray): msg = Msg.decode_msg(msg.data()) if isinstance(msg, KillMsg): if msg.name == '': self.close() elif isinstance(msg, BMMsg): # cvImg = np.frombuffer(msg.data, dtype=np.uint8).reshape((video_height, video_width, 4))[:, :, :3].copy() # height, width, channel = cvImg.shape # bytesPerLine = 3 * width # qImg = QImage(cvImg.data, width, height, bytesPerLine, QImage.Format.Format_RGB888).rgbSwapped() qImg = QImage(msg.data, VIDEO_WIDTH, VIDEO_HEIGHT, 4 * VIDEO_WIDTH, QImage.Format.Format_RGB888).rgbSwapped() self.label.setPixmap(QPixmap(qImg)) @QtCore.pyqtSlot(int) def vc(self, v): if self.horizontalSlider.sender() is None: self.p.send(ImageArgMsg('ui', v)) class ImageQt(Node): topics = [BMMsg] def __init__(self): super().__init__() def loop(self): app = QApplication(sys.argv) MainWindow = Adv(self) # MainWindow.move(int(px), int(py)) # MainWindow.resize(int(sx), int(sy)) MainWindow.show() app.exec()