Python 如何使用target=";打开超链接_“空白”;在PyQtWebEngine中?

Python 如何使用target=";打开超链接_“空白”;在PyQtWebEngine中?,python,pyqt5,qtwebengine,qwebengineview,Python,Pyqt5,Qtwebengine,Qwebengineview,我使用pyqt5和PyQtWebEngine制作了一个web浏览器。它工作正常,但当我单击带有target=“\u blank”的超链接时,它就不工作了,但我将如何修复它。单击此链接可以查看其源代码 . 请查看我的代码并告诉我如何操作,如中所述: _空白:通常是一个新选项卡,但用户可以配置浏览器打开一个新窗口 也就是说,目标不是重新加载页面,而是创建一个新选项卡,然后要获得该请求,必须覆盖QWebEngineView(或QWebEnginePage)的createWindow方法: 从funct

我使用pyqt5和PyQtWebEngine制作了一个web浏览器。它工作正常,但当我单击带有target=“\u blank”的超链接时,它就不工作了,但我将如何修复它。单击此链接可以查看其源代码 . 请查看我的代码并告诉我如何操作,如中所述:

_空白:通常是一个新选项卡,但用户可以配置浏览器打开一个新窗口

也就是说,目标不是重新加载页面,而是创建一个新选项卡,然后要获得该请求,必须覆盖QWebEngineView(或QWebEnginePage)的createWindow方法:

从functools导入缓存的\u属性
导入系统
从PyQt5导入QtCore、QtGui、QtWidgets、QtWebEngineWidgets
类WebView(QtWebEngineWidgets.QWebEngineView):
def createWindow(自身,类型_389;):
如果不是isinstance(self.window(),浏览器):
返回
如果类型=QtWebEngineWidgets.QWebEnginePage.WebBrowserTab:
返回self.window().tab_小部件。创建_选项卡()
类TabWidget(QtWidgets.QTabWidget):
def创建_选项卡(自身):
视图=网络视图()
index=self.addTab(视图,“(未命名)”)
self.setTabIcon(索引,view.icon())
view.titleChanged.connect(
lambda title,view=view:self.update\u title(视图,标题)
)
view.iconChanged.connect(lambda图标,view=view:self.update_图标(视图,图标))
self.setCurrentWidget(视图)
返回视图
def更新标题(自我、视图、标题):
index=self.indexOf(视图)
self.setTabText(索引、标题)
def更新图标(自身、视图、图标):
index=self.indexOf(视图)
self.setTabIcon(索引,图标)
类浏览器(QtWidgets.QMainWindow):
def uuu init uuu(self,parent=None):
super()。\uuuu init\uuuu(父级)
self.setCentralWidget(self.tab\u小部件)
view=self.tab\u小部件.create\u tab()
view.load(
QtCore.QUrl(
"https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_a_target"
)
)
@缓存的不动产
def选项卡_小部件(自身):
返回TabWidget()
def main():
app=qtwidts.QApplication(sys.argv)
w=浏览器()
w、 show()
sys.exit(app.exec_())
如果名称=“\uuuuu main\uuuuuuuu”:
main()

注意:除了它的实现之外,我建议您查看官方示例:,该示例可以轻松地转换为PyQt5,在PyQt5中实现了此功能和更多功能。

您可以查看我的代码并告诉我该怎么做吗。您可以通过点击这个链接@SaptakBhoumik来查看它的源代码。不,我并不致力于在项目中实现我的解决方案(至少不是在SO中),所以我的答案就足够了,因为它涵盖了能够实现它的所有逻辑