You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PySide6.QtMultimedia.QMediaPlayer在QPushButton上播放视频?

问题:在QPushButton上播放视频预览失败

我希望在QPushButton上播放视频,让用户能在工具里轻松预览视频,选QPushButton是因为需要监听它的clicked信号。尝试了两种方式都没成功:

  • 直接将QPushButton设为视频输出,没有任何反应
  • 改用QVideoWidget,只显示黑屏,但打印的媒体状态为MediaStatus.BufferedMedia,错误状态是Error.NoError

我的代码如下:

from PySide6 import QtWidgets, QtMultimedia, QtMultimediaWidgets

class VideoPreviewWidget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.media_player = QtMultimedia.QMediaPlayer()
        self.media_player.setSource(...)
        self.media_player.setLoops(QtMultimedia.QMediaPlayer.Loops.Infinite)
        self.media_player.play()
        
        self.setLayout(QtWidgets.QVBoxLayout())
        # self.preview_button = QtWidgets.QPushButton()
        # self.layout().addWidget(self.preview_button)
        # self.media_player.setVideoOutput(self.preview_button)  Nothing happened
        self.video_widget = QtMultimediaWidgets.QVideoWidget()
        self.layout().addWidget(self.video_widget)
        self.media_player.setVideoOutput(self.video_widget)  # Black screen

        self.media_player.mediaStatusChanged.connect(self.print_errors)

    def print_errors(self):
        print(self.media_player.mediaStatus(), self.media_player.errors(), self.media_player.errorString())
        # MediaStatus.BufferedMedia Error.NoError

我已经查阅过Qt官方的播放器示例,但仍未找到问题所在。

内容的提问来源于stack exchange,提问作者Yang HG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:52:03