PyQt5 QWebEngineView 不显示网页

问题描述 投票:0回答:4

应该渲染网页的部分变白几分之一秒然后变空

这是我的代码(基本上是https://www.pythonguis.com/examples/python-web-browser/):

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *    
import sys

class MainWindow(QMainWindow):  
    def __init__(self, *args, **kwargs):
        super(MainWindow,self).__init__(*args, **kwargs)
        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl("https://www.google.com"))

        self.setCentralWidget(self.browser)

        self.show()

app = QApplication(sys.argv)
window = MainWindow()

app.exec_()

这是类似的代码,我用它来从我的本地文件夹中呈现 html(也不起作用 - 相同的症状):

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *

import sys

class MainWindow(QMainWindow):

    def __init__(self, *args, **kwargs):
        super(MainWindow,self).__init__(*args, **kwargs)

        self.browser = QWebEngineView()
        file_path = os.path.abspath(os.path.join(os.path.dirname(__file__), 'temporary_files', "map.html"))
        self.browser.load(QUrl.fromLocalFile(file_path))
        self.setCentralWidget(self.browser)
        self.show()



app = QApplication(sys.argv)
window = MainWindow()

app.exec_()

PyQt5.15.6,python3.8,操作系统 Ubuntu 22.04 LTS。之前在ubuntu 18.04上运行,重装系统后就开始出现问题,虽然我备份和恢复了虚拟环境,所以库应该是一样的。

python-3.x pyqt pyqt5
4个回答
3
投票

试试这个:

from PyQt6.QtCore import QUrl
from PyQt6.QtWidgets import *
from PyQt6.QtGui import *
from PyQt6.QtWebEngineWidgets import *
import sys

class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(MainWindow,self).__init__(*args, **kwargs)
        self.browser = QWebEngineView()
        self.setCentralWidget(self.browser)
        # self.browser.setUrl(QUrl("https://www.google.com"))
        self.browser.setHtml("<html><body><h1>Hello World... Hello World</h1></body></html>")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()  # moved show outside main widget
    sys.exit(app.exec())   #  use app.exec instead of app.exec_

尝试使用 PyQt6 而不是 PyQt5。 Ubuntu 22.04 上的 Qt5-WebEngineWidgets 存在问题


0
投票

在通过 PIP 安装 PyQtWebEngine 时,我在 Ubuntu 22.04 中看到了同样的问题,但在 Ubuntu 21.10 中却没有。尝试通过系统包安装 PyQtWebEngine 并在虚拟环境之外运行您的代码。在 Ubuntu 中:

sudo apt install python3-pyqt5.qtwebengine

0
投票

回复可能有点晚,但我刚刚全新安装了 Ubuntu 服务器 22.04,并尝试了一个带有 QWebEngineView 的脚本。我有同样的问题。从包含 pip 安装文件的用户主文件夹中删除 .cache 和 .local 后,我的应用程序正在运行。这确实是 pip 和 ubuntu 提供的文件之间的问题。所以,在这个 Ubuntu 版本上跳过使用 pip 是我的解决方案。


0
投票

我在全新安装的 Ubuntu 22.04 LTS 上解决了同样的问题。

我想我是通过使用 pip 安装 pyqt5、pyqt5-sip 和 pywebengine 造成的问题。

我用 pip 卸载了这三个。

然后我运行我的 python 脚本,它使用系统默认的 pyqt5,它已经安装了。

如果您发现 pyqt5 尚未安装,请尝试通过 apt-get 而不是通过 pip 安装它。

我怀疑问题出在我错误地安装了两份pyqt5,而安装了pip的一份与系统默认的冲突(似乎是由apt-get控制的)。

© www.soinside.com 2019 - 2024. All rights reserved.