from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QSizePolicy from PyQt5.QtGui import QImage, QPixmap from PyQt5.QtCore import QTimer class Visualize(QWidget): def __init__(self, get_pybullet_image): super().__init__() self.get_pybullet_image = get_pybullet_image # Настройка компоновки self.layout = QVBoxLayout(self) self.layout.setContentsMargins(0, 0, 0, 0) # Убираем отступы по краям self.label = QLabel(self) self.label.setScaledContents(True) # Масштабирование изображения по размеру QLabel self.label.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) # QLabel занимает всю доступную область self.layout.addWidget(self.label) # Таймер для обновления изображения self.timer = QTimer() self.timer.timeout.connect(self.update_image) self.timer.start(100) # Обновление каждые 100 мс def update_image(self): (rgb, width, height) = self.get_pybullet_image() # Преобразование RGB-данных в QImage image = QImage(rgb, width, height, QImage.Format_RGB888) pixmap = QPixmap.fromImage(image) # Обновление изображения на QLabel self.label.setPixmap(pixmap)