class NowPlayingWidget(QtWidgets.QGraphicsView): def __init__(self, media_player): super().__init__() self._media_player = media_player self._media_player.currentMediaChanged.connect(self.change_title) self.setScene(QtWidgets.QGraphicsScene(self)) self.init_ui() def set_opacity(self, value): self._opacity = value self.overlay.setOpacity(value) def init_ui(self): self.main_layout = QtWidgets.QVBoxLayout() self.main_layout.setContentsMargins(0, 0, 0, 0) self.setFixedHeight(200) self.now_playing_visual = NowPlayingVisual(self._media_player, self) self.main_layout.addWidget(self.now_playing_visual) self.setBackgroundBrush(QtGui.QBrush(QtCore.Qt.black)) self.video_item = QGraphicsVideoItem() self.video_item.setGraphicsEffect(QtWidgets.QGraphicsBlurEffect()) self.video_item.setAspectRatioMode( QtCore.Qt.KeepAspectRatioByExpanding) self._media_player.setVideoOutput(self.video_item) self.scene().addItem(self.video_item) self.overlay = QtWidgets.QGraphicsRectItem(0, 0, 0, 0, self.video_item) self.overlay.setBrush(QtGui.QBrush(QtCore.Qt.black)) self.set_opacity(0.8) self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) self.setStyleSheet('border: 0px;') self.setLayout(self.main_layout) def change_title(self, media): data = self._media_player.nowplaying() if data: self.now_playing_visual.set_title(data) def resizeEvent(self, event): self.video_item.setSize(QtCore.QSizeF(self.size())) rect = QtCore.QRectF(0, 0, self.video_item.size().width(), self.video_item.size().height()) self.overlay.setRect(rect)