PyQt5 открыть новое окно на js window.open со свойствами - PullRequest
0 голосов
/ 28 мая 2019

Мне нужно открывать новое окно по клику, когда в html-окне есть window.open ... он открывается согласно моему коду. Но когда есть window.open со свойствами, он открывает новое окно один раз, и это больше не происходит

Я пробовал разные вещи

from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
from PyQt5.QtCore import QUrl
from PyQt5 import QtGui
from PyQt5.QtPrintSupport import QPrinter 
from PyQt5.QtCore import *

from PyQt5.QtWidgets import (QApplication, QMainWindow, QPushButton, 
                             QToolTip, QMessageBox, QLabel,QMenu,QKeySequenceEdit)



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



class MyWindow(QtWebEngineWidgets.QWebEngineView):
    currentLoadProgress = 0
    currentFile = ''
    pdf_count = 0

    def __init__(self,windows, parent=None):
        super(MyWindow, self).__init__()
        self.myPage = MyPage(self)
        self.setPage(self.myPage)
        self._windows = windows
        self._windows.append(self)
        self.resize(640, 480)
        self.load(QtCore.QUrl.fromUserInput("file:///C:/Users/User/Desktop/default.html"))
        self.show()


    def createWindow(self, windows):
        if windows == QtWebEngineWidgets.QWebEnginePage.NavigationTypeLinkClicked:
            webview = MyWindow(self._windows)
            webview.show()
            return webview
        if windows == QtWebEngineWidgets.QWebEnginePage.WebDialog:
            webview = MyWindow([])
            webview.show()
            return webview
        return super(MyWindow, self).createWindow(windows)



if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    windows = []
    a= MyWindow(windows)
    a.show()
    sys.exit(app.exec_())
<html>

<head>

<title>URL Error</title>

</head>

<body>

<center style="padding-top:100px">

<h2>Invaid URL</h2>

<p>No URL passed in argument!</p>


</center>


<a href="#" onclick="return openPopup('1');">JS function window.open with Properties</a><br><br>


<script language="javascript">

function openPopup(obj)

{

try

{

if(obj=="1")

{

window.open('https://www.google.com','DevSearch','top=0,left=0,width=950,height=550,status=yes,resizable=yes,scrollbars=yes'); 

}
}  

catch(e)

{

alert("Script Error... Please Contact With Administrator ! ");

return false;

}

}

</script>

</body>

</html>

Когда по ссылке щелкают с помощью window.open со свойствами, которые она показывает, открывайте ссылку в новой вкладке при каждом нажатии на ссылку.

...