使用QWebEngine在同一窗口中打开任何链接(甚至_blank)

问题描述 投票:2回答:1

我有这个代码应该访问/关注我在同一窗口中单击的任何链接,即使它通常会在新窗口中打开。这不是必须右键单击,然后从上下文菜单中选择“关注链接”。出于某种原因,它无法按预期工作。

这是代码:

from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QDesktopServices
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage


class WebEnginePage(QWebEnginePage):
    def acceptNavigationRequest(self, url,  _type, isMainFrame):
        if _type == QWebEnginePage.NavigationTypeLinkClicked:
            return True
        return QWebEnginePage.acceptNavigationRequest(self, url,  _type,      isMainFrame)

class HtmlView(QWebEngineView):
    def __init__(self, *args, **kwargs):
        QWebEngineView.__init__(self, *args, **kwargs)
        self.setPage(WebEnginePage(self))

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    w = HtmlView()
    w.load(QUrl("https://yahoo.com"));
    w.show()
    sys.exit(app.exec_())
python hyperlink pyqt5 qwebengineview
1个回答
2
投票

如果希望链接始终在同一窗口中打开,则可以重新实现createWindow方法,以便返回相同的视图:

class HtmlView(QWebEngineView):
    def createWindow(self, wintype):
        return self

wintype参数提供有关正在请求的窗口类型的信息。您可能希望以不同方式处理对话框窗口。

请注意,您的示例中的WebEnginePage子类不需要此工作。

© www.soinside.com 2019 - 2024. All rights reserved.