gpt4 book ai didi

python - QFrame 内的 Vlc 播放器

转载 作者:行者123 更新时间:2023-12-01 06:22:12 25 4
gpt4 key购买 nike

我想将 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_())

最佳答案

您必须将 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
)

<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_())

关于python - QFrame 内的 Vlc 播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60309290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com