这是我的代码(基本上是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上运行,重装系统后就开始出现问题,虽然我备份和恢复了虚拟环境,所以库应该是一样的。
试试这个:
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 存在问题
在通过 PIP 安装 PyQtWebEngine 时,我在 Ubuntu 22.04 中看到了同样的问题,但在 Ubuntu 21.10 中却没有。尝试通过系统包安装 PyQtWebEngine 并在虚拟环境之外运行您的代码。在 Ubuntu 中:
sudo apt install python3-pyqt5.qtwebengine
回复可能有点晚,但我刚刚全新安装了 Ubuntu 服务器 22.04,并尝试了一个带有 QWebEngineView 的脚本。我有同样的问题。从包含 pip 安装文件的用户主文件夹中删除 .cache 和 .local 后,我的应用程序正在运行。这确实是 pip 和 ubuntu 提供的文件之间的问题。所以,在这个 Ubuntu 版本上跳过使用 pip 是我的解决方案。
我在全新安装的 Ubuntu 22.04 LTS 上解决了同样的问题。
我想我是通过使用 pip 安装 pyqt5、pyqt5-sip 和 pywebengine 造成的问题。
我用 pip 卸载了这三个。
然后我运行我的 python 脚本,它使用系统默认的 pyqt5,它已经安装了。
如果您发现 pyqt5 尚未安装,请尝试通过 apt-get 而不是通过 pip 安装它。
我怀疑问题出在我错误地安装了两份pyqt5,而安装了pip的一份与系统默认的冲突(似乎是由apt-get控制的)。