如何在pywebview中开启Debug但不自动弹出DevTools窗口
解决pywebview调试工具自动弹出问题
要保留右键菜单和调试工具访问权限,同时阻止DevTools自动弹出,可以根据pywebview使用的后端分别处理:
方法1:针对QtWebEngine后端(跨平台)
无需依赖debug=True,手动启用开发者工具支持即可保留右键菜单的「检查元素」选项,且不会自动弹出DevTools窗口。
修改代码,在custom_logic函数中启用Qt的开发者扩展支持:
import webview from PyQt5.QtWebEngineWidgets import QWebEngineSettings def custom_logic(window): # 获取QtWebEnginePage实例 page = window.get_elements()[0].page() # 启用开发者工具支持,右键菜单将显示检查元素选项 page.settings().setAttribute(QWebEngineSettings.WebAttribute.DeveloperExtrasEnabled, True) height = 800 width = 1200 window = webview.create_window('Unreal Map Bridge', url='https://map.justgeektechs.com', height=height, width=width) window.events.closed += on_closed # 此处无需设置debug=True,避免触发自动弹出DevTools webview.start(func=custom_logic, args=window, private_mode=False)
方法2:针对EdgeChromium后端(Windows)
利用CEF的启动参数阻止DevTools自动打开,同时保留debug=True以启用右键菜单:
import webview def on_closed(): pass def custom_logic(window): pass height = 800 width = 1200 window = webview.create_window('Unreal Map Bridge', url='https://map.justgeektechs.com', height=height, width=width) window.events.closed += on_closed # 通过extra_args传递CEF参数,禁止自动打开DevTools webview.start(func=custom_logic, args=window, debug=True, private_mode=False, extra_args=['--auto-open-devtools-for-tabs=false'])
补充说明
- 可通过
webview.current_backend查看当前使用的后端类型。 - Qt后端方法无需额外依赖(确保pywebview安装时包含Qt支持),EdgeChromium后端需保证pywebview使用CEF/Edge运行时。
内容的提问来源于stack exchange,提问作者dan
相关产品推荐
相关产品推荐

