YouTube视频嵌入PyQt

3
我该如何使用PyQt5嵌入YouTube视频?我尝试了以下方法,但是出现了未解决的错误:

DirectShowService:doRender未解决的错误代码

from PyQt5 import QtWidgets,QtCore,QtGui
import sys, time
from PyQt5.QtCore import Qt,QUrl
from PyQt5 import QtWebKit
from PyQt5 import QtWebKitWidgets
from PyQt5.QtWebKit import QWebSettings
#from PyQt5 import QtWebEngineWidgets #import QWebEngineView,QWebEngineSettings

class window(QtWidgets.QMainWindow):
    def __init__(self):
        QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled,True)
        super(window,self).__init__()
        self.centralwid=QtWidgets.QWidget(self)
        self.vlayout=QtWidgets.QVBoxLayout()
        self.webview=QtWebKitWidgets.QWebView()
        self.webview.setUrl(QUrl("https://www.youtube.com/watch?v=Mq4AbdNsFVw"))
        self.vlayout.addWidget(self.webview)
        self.centralwid.setLayout(self.vlayout)
        self.setCentralWidget(self.centralwid)
        self.show()

app=QtWidgets.QApplication([])
ex=window()
sys.exit(app.exec_())
1个回答

3

您正在从PyQt5导入一些已弃用的模块(QtWebKitQtWebKitWidgets)。看起来您在导入底部注释掉了正确的路径。

如果您解决了这些问题并使用适当的模块(QtWebEngineCoreQtWebEngineWidgets),它可以在我的系统上工作。

from PyQt5 import QtWidgets,QtCore,QtGui
import sys, time
from PyQt5.QtCore import Qt,QUrl
from PyQt5 import QtWebEngineWidgets
from PyQt5 import QtWebEngineCore
from PyQt5.QtWebEngineWidgets import QWebEngineSettings

class window(QtWidgets.QMainWindow):
    def __init__(self):
        QWebEngineSettings.globalSettings().setAttribute(QWebEngineSettings.PluginsEnabled,True)
        super(window,self).__init__()
        self.centralwid=QtWidgets.QWidget(self)
        self.vlayout=QtWidgets.QVBoxLayout()
        self.webview=QtWebEngineWidgets.QWebEngineView()
        self.webview.setUrl(QUrl("https://www.youtube.com/watch?v=Mq4AbdNsFVw"))
        self.vlayout.addWidget(self.webview)
        self.centralwid.setLayout(self.vlayout)
        self.setCentralWidget(self.centralwid)
        self.show()

app=QtWidgets.QApplication([])
ex=window()
sys.exit(app.exec_())

我获得的输出看起来像下面这样(似乎是正确的):

enter image description here


实际上我正在使用Windows(PyQt5,Python 3.6),但是我在导入EngineCore和EngineWidgets时遇到了问题。出现了"No module Named QtWebEngineWidgets"的错误提示。 - Nimish Bansal
你的PyQt5版本是多少? - Grr
精确版本 PyQt -> 5.6 和 Qt -> 5.6.2 - Nimish Bansal
奇怪。我这里也是相同的版本,只是在OS X上。你尝试过更新/重新安装PyQt(而不是qt)了吗? - Grr
@Grr 问题不是由模块引起的,我在Linux上安装了PyQt5 5.9,并且两个模块都可以正常工作,问题可能是DirectShow版本不适合。 - eyllanesc
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接