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 无法在 Windows 7 中呈现本地 html 文件
PyQt5 等效于 QtWebEngineWidgets.QWebEngineView() 的 QtWebKitWidgets.QWebView.page.mainFrame()?