【问题标题】:youtube video embedding pyqtyoutube视频嵌入pyqt
【发布时间】:2018-01-04 21:15:59
【问题描述】:

如何使用 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_())

【问题讨论】:

    标签: python qt pyqt pyqt5


    【解决方案1】:

    您正在从 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_())
    

    我得到的输出如下所示(看起来是正确的):

    【讨论】:

    • 实际上我使用的是 Windows(PyQt5,python 3.6),但在导入 EngineCore 和 EngineWidgets 时遇到问题。没有名为 QtWebEngineWidgets 的模块
    • 你的 PyQt5 的确切版本是什么?
    • 精确版本 pyqt -> 5.6 和 qt -> 5.6.2
    • 奇怪。这里的版本相同,仅在 OS X 上。您是否尝试过更新/重新安装 PyQt(不是 qt)?
    • 会是windows的问题吗?
    猜你喜欢
    • 2021-12-04
    • 2012-06-25
    • 1970-01-01
    • 2020-08-25
    • 2015-06-03
    • 2014-07-07
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多