PyQt5 QWebEngineView点击链接打开新页面问题 您所在的位置:网站首页 新网页不能自动跳转 PyQt5 QWebEngineView点击链接打开新页面问题

PyQt5 QWebEngineView点击链接打开新页面问题

2024-07-08 10:18| 来源: 网络整理| 查看: 265

PyQt5 QWebEngineView点击链接打开新页面问题

用QWebEngineView展示web界面,点击链接后没反应,上网查到了用urlChanged信号,但是这个是同一页面跳转的时候才会改变URL,打开新页面不会改变当前页的URL,自然也没有这个信号;

打开新页面会调用QWebEngineView中的createWindow这个函数,所以可以重写这个函数达到目的,参照https://tieba.baidu.com/p/5136101813?red_tag=0301629953能够打开一个新的窗口显示新web 在这里插入图片描述

还有https://www.cnblogs.com/Netsharp/p/9260862.html新建了一个窗口,和上面的效果应该一样。

https://blog.csdn.net/v6543210/article/details/89969557这个使得web能够在当前窗口显示

QWebEngineView *WebView::createWindow(QWebEnginePage::WebWindowType type) { return this; }

可是上面找到的例子都是C++的,没看到python的,我在python中使用return self不行,自己新建窗口显示的话,会显示空白的页面,查看到当前页面的URL是空的。我的错误代码如下:

from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage from PyQt5 import QtCore from PyQt5.QtCore import Qt class MyWebView(QWebEngineView): def createWindow(self, QWebEnginePage_WebWindowType): newWeb = MyWebView(self) newWeb.setGeometry(QtCore.QRect(0, 0, 300, 150)) # 设置大小 newWeb.show() return

问题就是URL是空的,没传进来,找了很久,后来在https://stackoverflow.com/questions/47897467/qwebengine-open-createwindow-if-target-blank上面发现了答案,他是把newWeb设置成了MyWebView的类变量,这样才能传递点击的URL,代码如下:

def createWindow(self, QWebEnginePage_WebWindowType): if QWebEnginePage_WebWindowType == QWebEnginePage.WebBrowserTab: self.newWeb = MyWebView(self) # self.newWeb = MyWebView() # 不认self为父,就会在新窗口显示,认self作父就能在当前窗口显示 self.newWeb.setAttribute(Qt.WA_DeleteOnClose, True) # 加上这个属性能防止Qt Qtwebengineprocess进程关不掉导致崩溃 self.newWeb.setGeometry(QtCore.QRect(0, 0, 300, 150)) self.newWeb.show() return self.newWeb return super(MyWebView, self).createWindow(QWebEnginePage_WebWindowType)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有