我想将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_())
您必须将winId()
的QFrame
传递给媒体播放器,并且该方法取决于每个OS,如下所示:
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 = "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_())