【问题标题】:QWebengine open createwindow if target _blank如果目标为 _blank,QWebengine 打开创建窗口
【发布时间】:2017-12-20 01:11:35
【问题描述】:

如果链接是目标 _blank,我有一个假设打开/创建新窗口的代码,但是它没有按预期执行,并且没有返回任何操作。

代码如下:

class MyPage(QWebEnginePage):
    def __init__(self, parent=None):
        super(MyPage, self).__init__(parent)
    def triggerAction(self, action, checked=False):
        if action == QWebEnginePage.OpenLinkInNewWindow:
            self.createWindow(QWebEnginePage.WebBrowserWindow)

        return super(MyPage, self).triggerAction(action, checked)


class MyWindow(QtWebEngineWidgets.QWebEngineView):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.myPage = MyPage(self)

        self.setPage(self.myPage)

    def createWindow(self, windowType):
        if windowType == QWebEnginePage.WebBrowserWindow:
            self.webView = MyWindow()
            self.webView.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)

            return self.webView

        return super(MyWindow, self).createWindow(windowType)

if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.show()
    main.load(QUrl("https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_a_target"))

    sys.exit(app.exec_())

如果可能的话,想知道为什么它不起作用。

谢谢, 最大

【问题讨论】:

    标签: python pyqt5 qwebview


    【解决方案1】:

    如果您在任何浏览器中直接测试该链接,您将看到该操作是创建一个新选项卡,因此windowType 是这种情况下的类型QWebEnginePage::WebBrowserTab,当时我们创建新窗口并显示它如下图:

    class MyWindow(QWebEngineView):
        [...]
        def createWindow(self, windowType):
            if windowType == QWebEnginePage.WebBrowserTab:
                self.webView = MyWindow()
                self.webView.setAttribute(Qt.WA_DeleteOnClose, True)
                self.webView.show()
                return self.webView
            return super(MyWindow, self).createWindow(windowType)
    

    【讨论】:

    • 如果第一个窗口被关闭,是否可以关闭第二个窗口?
    猜你喜欢
    • 1970-01-01
    • 2019-07-22
    • 2018-06-02
    • 1970-01-01
    • 2020-03-19
    • 2011-02-02
    • 2013-04-04
    • 1970-01-01
    • 2017-07-25
    相关资源
    最近更新 更多