PyQt6构建简易浏览器加载DuckDuckGo遇Permissions-Policy错误
问题分析与解决
错误含义说明
控制台输出的js: Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'unload'.是DuckDuckGo服务器的HTTP响应头问题:服务器尝试启用unload这个处于Origin Trial(实验性特性试用)阶段的权限策略,但PyQt6内置的WebEngine内核并未支持该特性。这个错误只是控制台警告,并非页面无法显示的根本原因。
页面无法显示的核心原因
代码中创建了QWebEngineView控件,但未将其添加到窗口的布局中,导致控件从未被渲染到界面上,自然看不到DuckDuckGo页面。
修复后的代码
# importing PyQt6 and dependencies from PyQt6.QtWidgets import * from PyQt6.QtGui import QIcon from PyQt6.QtCore import * from PyQt6.QtWebEngineWidgets import QWebEngineView import sys # Main Window Class class Window(QWidget): def __init__(self): # Constructor super().__init__() self.resize(300,300) # Size self.setWindowTitle("Web Browser") # Title # 将布局设为实例变量,方便后续添加控件 self.main_layout = QVBoxLayout() self.setLayout(self.main_layout) self.showMaximized() # Max window # 初始化搜索引擎视图 self.webSearchEngine() def webSearchEngine(self): # Set DuckDuckGo as main browser self.web = QWebEngineView() self.mainSearchEngine = QUrl("https://duckduckgo.com") # Display Url self.web.load(self.mainSearchEngine) # 将Web视图添加到窗口布局中 self.main_layout.addWidget(self.web) app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec())
关键修改点
- 将
main_layout改为实例变量self.main_layout,确保后续方法能访问到布局对象 - 在
webSearchEngine中调用self.main_layout.addWidget(self.web),把Web视图控件添加到窗口布局,使其显示在界面上 - 将
webSearchEngine()的调用移到__init__方法内,确保窗口初始化时就加载页面
内容的提问来源于stack exchange,提问作者dann
相关产品推荐
相关产品推荐

