VideoWidget with QGraphicsView

from PySide6 import QtWidgets, QtGui
from PySide6.QtCore import QRectF, Qt
from PySide6.QtMultimediaWidgets import QGraphicsVideoItem


class VideoWidget(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.videoItem = QGraphicsVideoItem()
        self.videoItem.setAspectRatioMode(Qt.KeepAspectRatio)
        self.scene = QtWidgets.QGraphicsScene(self)
        self.graphicsView = QtWidgets.QGraphicsView(self.scene)
        self.graphicsView.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.graphicsView.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        self.scene.addItem(self.videoItem)

        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.graphicsView)
        self.setLayout(layout)
        self.image_ = None
        if self.height() != 0:
            self.des_w_h_ratio_ = self.width() / self.height()
        self.src_w_h_ratio_ = float()
        self.scale_w_ = int()
        self.scale_h_ = int()
        pass

    def set_image(self, image):
        # self.image_ = image
        # self.src_w_h_ratio_ = self.image_.width() / self.image_.height()
        # self.update()
        # w = image.width()
        # h = image.height()

        self.scene.clear()
        # image = QtGui.QPixmap.fromImage(image)
        self.scene.addPixmap(image)
        self.graphicsView.fitInView(QRectF(0, 0, self.width(), self.height()), Qt.KeepAspectRatio)
        pass

posted @ 2022-11-02 09:42  cnblogs_kk  阅读(107)  评论(0)    收藏  举报