QFrame 内的 Vlc 播放器
Vlc player inside QFrame
我想将 VLC 视频播放器放在一个框架内。
每次我 运行 它都会在新的 window 中打开
我怎样才能把它放在框架里
这是代码
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_())
您必须将 QFrame
的 winId()
传递给媒体播放器,方法取决于每个 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
)
<b>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())</b>
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_())
我想将 VLC 视频播放器放在一个框架内。 每次我 运行 它都会在新的 window 中打开 我怎样才能把它放在框架里
这是代码
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_())
您必须将 QFrame
的 winId()
传递给媒体播放器,方法取决于每个 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
)
<b>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())</b>
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_())