у меня есть этот код в гораздо большем пользовательском интерфейсе, мне нужно отобразить видео в виджете миниатюр, класс справа ниже, моя проблема в том, что виджет и видео вообще не реагируют, если я попытаюсь изменить размер панель видео сжимается или исчезает без изменения размера
from PySide2.QtCore import QUrl, QEvent
from PySide2.QtMultimedia import QMediaContent, QMediaPlayer
from PySide2.QtMultimediaWidgets import QVideoWidget
from PySide2.QtWidgets import QHBoxLayout, QVBoxLayout, QWidget
from PySide2.QtWidgets import QWidget
class Thumbnail(QWidget):
"""
Thumbnail Video thumbnail view
"""
def __init__(self, parent=None):
super(Thumbnail, self).__init__(parent)
self.VideoWidget = QVideoWidget()
self.player = QMediaPlayer(None, QMediaPlayer.VideoSurface)
self.player.setMedia(QMediaContent(QUrl.fromLocalFile(r"video.mov")))
self.player.play()
self.player.setVideoOutput(self.VideoWidget)
self.v_layout = QVBoxLayout()
controlLayout = QHBoxLayout()
controlLayout.setContentsMargins(0, 0, 0, 0)
self.v_layout.addWidget(self.VideoWidget)
self.v_layout.addLayout(controlLayout)
self.setLayout(self.v_layout)
self.v_layout.addWidget(self.VideoWidget)
def setPixmap(self, blaba):
pass
def event(self, e):
if e.type() == QEvent.Resize:
self.updateGeometry()
self.VideoWidget.updateGeometry()
return super(Thumbnail, self).event(e)
Я добавлю ссылку на очень большую часть пользовательского интерфейса
class BrowserWidget(QtWidgets.QWidget, browser_widget_ui.Ui_Form):
def __init__(self, parent=None):
# load Qt settings
self.currentEntityType = "Assets"
self.settings = QtCore.QSettings(config.SETTINGS_ORG, config.SETTINGS_APP)
self.settings.beginGroup(self.APP)
self.current_entity = None
super(BrowserWidget, self).__init__(parent)
self.setupUi(self)
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(999, 685)
self.verticalLayout_4 = QtWidgets.QVBoxLayout(Form)
self.wgt_infos = QtWidgets.QWidget(self.splitter_main)
self.wgt_infos.setObjectName("wgt_infos")
self.wgt_infos.setMaximumSize(QtCore.QSize(800, 16777215))
self.verticalLayout_11 = QtWidgets.QVBoxLayout(self.wgt_infos)
self.verticalLayout_11.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_11.setObjectName("verticalLayout_11")
self.splitter_infos = QtWidgets.QSplitter(self.wgt_infos)
self.splitter_infos.setOrientation(QtCore.Qt.Vertical)
self.splitter_infos.setObjectName("splitter_infos")
self.thumbnail = Thumbnail(self.splitter_infos)
self.thumbnail.setObjectName("thumbnail")
self.wgt_infos = QtWidgets.QWidget(self.splitter_main)
self.wgt_infos.setObjectName("wgt_infos")
self.wgt_infos.setMaximumSize(QtCore.QSize(800, 16777215))
self.verticalLayout_11 = QtWidgets.QVBoxLayout(self.wgt_infos)
self.verticalLayout_11.setContentsMargins(0, 0, 0, 0)
self.verticalLayout_11.setObjectName("verticalLayout_11")
self.splitter_infos = QtWidgets.QSplitter(self.wgt_infos)
self.splitter_infos.setOrientation(QtCore.Qt.Vertical)
self.splitter_infos.setObjectName("splitter_infos")
self.thumbnail = Thumbnail(self.splitter_infos)
self.thumbnail.setObjectName("thumbnail")
def main():
app = QtWidgets.QApplication.instance() or QtWidgets.QApplication([])
app.setStyle("plastique")
p = QtGui.QPalette()
p.setColor(QtGui.QPalette.Highlight, QtGui.QColor("#696969"))
app.setPalette(p)
bank = BrowserWidget()
bank.show()
app.exec_()
main()
Есть ли у вас какие-либо предложения о том, как я могу это сделать?
Извините, но вашего кода недостаточно для понимания проблемы, так как в нем отсутствуют важные части макета окна. Также не следует вызывать
start()
на медиаплеере до настройки видеовыхода (и добавления его в макет).