PyQt5 QWebEngineView 不显示任何内容

Posted

技术标签:

【中文标题】PyQt5 QWebEngineView 不显示任何内容【英文标题】:PyQt5 QWebEngineView not Displaying Anything 【发布时间】:2021-03-11 03:16:25 【问题描述】:

所以我正在使用 PyQt5 构建一个简单的 Web 浏览器,使用 QtWebEngineView,它工作正常,但是当我在地址栏中输入一些内容并按 Enter 时,当前页面发生了变化,但输入的网址没有加载,屏幕保持空白。

它也不适用于https://

"""A Simple Web Browser Written in Python and PyQt5"""

import sys

from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QIcon
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBar, QAction, QLineEdit


class PyChromeWindow(QMainWindow):
    DEFAULT_SEARCH_ENGINE = QUrl("https://www.google.com")

    def __init__(self):
        super(PyChromeWindow, self).__init__()
        self.browser = QWebEngineView(self)
        self.browser.setUrl(self.DEFAULT_SEARCH_ENGINE)

        # ToolBar
        self.browser_tool_bar = QToolBar()
        self.addToolBar(self.browser_tool_bar)

        # Back Action
        self.back_btn = QAction(QIcon('./resources/back_arrow16px.png'), 'Back')
        self.back_btn.triggered.connect(self.browser.back)
        self.browser_tool_bar.addAction(self.back_btn)

        # Forward Action
        self.forward_action = QAction(QIcon('./resources/forward_arrow16px.png'), 'Forward')
        self.forward_action.triggered.connect(self.browser.forward)
        self.browser_tool_bar.addAction(self.forward_action)

        # Refresh Action
        self.refresh_action = QAction(QIcon('./resources/refresh_icon16px.png'), 'Refresh')
        self.refresh_action.triggered.connect(self.browser.reload)
        self.browser_tool_bar.addAction(self.refresh_action)

        # Home Action
        self.home_action = QAction(QIcon('./resources/home_icon16px.png'), 'Home')
        self.home_action.triggered.connect(lambda: self.browser.setUrl(self.DEFAULT_SEARCH_ENGINE))
        self.browser_tool_bar.addAction(self.home_action)

        # Address Bar
        self.address_bar = QLineEdit()
        self.address_bar.returnPressed.connect(self.navigate_to_url)
        self.browser_tool_bar.addWidget(self.address_bar)

        self.setCentralWidget(self.browser)
        self.showMaximized()

    def navigate_to_url(self):
        """Navigate to a specific URL"""
        url = QUrl(self.address_bar.text())
        self.browser.load(url)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    app.setApplicationName("PyChrome")
    window = PyChromeWindow()
    app.exec_()

【问题讨论】:

【参考方案1】:

“www.google.com”不是 QWebEngineView 的有效 url,在这种情况下,您必须使用 QUrl::fromUserInput() 推断出有效的 url。

url = QUrl.fromUserInput(self.address_bar.text())

【讨论】:

以上是关于PyQt5 QWebEngineView 不显示任何内容的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5中的QWebEngineView和QWidget

PyQt5 QWebEngineView 无法正常工作

PyQt5:QWebEngineView 无法在 Windows 7 中呈现本地 html 文件

PyQt5 QWebview 刷新问题

使用pyqt5 QWebEngineView开发浏览器

PyQt5 等效于 QtWebEngineWidgets.QWebEngineView() 的 QtWebKitWidgets.QWebView.page.mainFrame()?