【问题标题】:Vlc player inside QFrameQFrame内的Vlc播放​​器
【发布时间】:2020-02-19 21:11:37
【问题描述】:

我想将 VLC 视频播放器放在一个框架内。 每次我运行它都会在新窗口中打开 我怎样才能把它放在框架里

这里是代码

import sys

import os.path

from PyQt5.QtCore import Qt, QTimer

from PyQt5.QtGui import QPalette, QColor

from PyQt5.QtWidgets import QMainWindow, QWidget, QFrame, QSlider, QHBoxLayout, QPushButton, \
    QVBoxLayout, QAction, QFileDialog, QApplication

import vlc

from PyQt5 import QtCore, QtGui, QtWidgets

class Player(QMainWindow):


    def __init__(self, master=None):

        QMainWindow.__init__(self, master)

        self.setWindowTitle("Media Player")

        # creating a basic vlc instance

        self.instance = vlc.Instance()

        # creating an empty vlc media player

        self.mediaplayer = self.instance.media_player_new()

        self.isPaused = False



         ##########video frame

        self.videoframe = QFrame(self)

        self.videoframe.setGeometry(QtCore.QRect(210, 70, 391, 291))

        self.videoframe.setFrameShape(QtWidgets.QFrame.Box)

        self.videoframe.setFrameShadow(QtWidgets.QFrame.Raised)

        self.vboxlayout = QVBoxLayout()

        self.vboxlayout.addWidget(self.videoframe)




        ######### the vlc

        self.filename='C:/Users/Kikomi/Pictures/Camera Roll/kk.mp4'

        self.media = self.instance.media_new(self.filename)

        self.mediaplayer.set_media(self.media)

        self.mediaplayer.play()




if __name__ == "__main__":

    app = QApplication(sys.argv)

    player = Player()

    player.show()

    player.resize(640, 480)

    if sys.argv[1:]:

        player.OpenFile(sys.argv[1])

    sys.exit(app.exec_())

【问题讨论】:

  • 如果您还有其他问题,那么您必须创建一个新帖子。

标签: python pyqt pyqt5 vlc


【解决方案1】:

您必须将QFramewinId() 传递给媒体播放器,方法取决于每个操作系统,如下所示:

import sys

import vlc

from PyQt5 import QtCore, QtGui, QtWidgets


class Player(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(Player, self).__init__(parent)
        self.setWindowTitle("Media Player")
        # creating a basic vlc instance
        self.instance = vlc.Instance()
        self.mediaplayer = self.instance.media_player_new()
        ##########video frame
        self.videoframe = QtWidgets.QFrame(
            frameShape=QtWidgets.QFrame.Box, frameShadow=QtWidgets.QFrame.Raised
        )

        if sys.platform.startswith("linux"):  # for Linux using the X Server
            self.mediaplayer.set_xwindow(self.videoframe.winId())
        elif sys.platform == "win32":  # for Windows
            self.mediaplayer.set_hwnd(self.videoframe.winId())
        elif sys.platform == "darwin":  # for MacOS
            self.mediaplayer.set_nsobject(self.videoframe.winId())

        central_widget = QtWidgets.QWidget()
        self.setCentralWidget(central_widget)
        lay = QtWidgets.QVBoxLayout(central_widget)
        lay.addWidget(self.videoframe)

        filename = "/path/of/your/video.mp4"
        media = self.instance.media_new(filename)
        self.mediaplayer.set_media(media)
        self.mediaplayer.play()


if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)

    player = Player()
    player.show()
    player.resize(640, 480)

    sys.exit(app.exec_())

【讨论】:

    猜你喜欢
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2011-08-18
    • 2013-05-13
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多