PyQt5开发书签功能时QWebEngineView调用setUrl无法加载页面如何解决
问题原因
你在navigate_bookmark方法中给URL字符串额外拼接了多余的双引号,导致QUrl无法解析出合法的地址,所以浏览器没有加载反应。
你当前的错误写法是:
action_url = '"'+action.text()+'"'
拼接后得到的字符串是带前后双引号的,比如"http://google.com",这不是合法的URL格式。
修复方案
直接取action.text()的原始内容传给QUrl即可,修改后的navigate_bookmark方法如下:
def navigate_bookmark(self): action = self.sender() action_url = action.text() self.browser.setUrl(QUrl(action_url)) print(action_url)
可选优化(显示书签标题)
如果你想让书签菜单显示网页标题而不是冗长的URL,可以把URL存在Action的data字段里,修改逻辑如下:
- 添加书签时:
def add_bookmark(self): bookmark_title = self.browser.page().title() bookmark_url = self.browser.url().toString() # Action显示标题,URL存到data中 bookmark_select_action = QAction(bookmark_title, self) bookmark_select_action.setData(bookmark_url) bookmark_select_action.triggered.connect(self.navigate_bookmark) self.bookmark_menu.addAction(bookmark_select_action)
- 跳转时从data取URL:
def navigate_bookmark(self): action = self.sender() action_url = action.data() self.browser.setUrl(QUrl(action_url))
内容的提问来源于stack exchange,提问作者Taniguchi
相关产品推荐
相关产品推荐

