2017-12-20 3 views
0

링크가 목표 _blank 인 경우 새 창을 열거 나 작성한다고하는 코드가 있지만 의도 한대로 작동하지 않으며 대가로 조치를 제공하지 않습니다.QWebengine 열려있는 createwindow 목표 _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_()) 

이 가능한 경우는, 작동하지 않는 이유를 알고 싶습니다 여기

는 코드입니다.

감사합니다, 최대

답변

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) 
+0

첫 번째 창이 닫힌 경우 닫을 수 있습니까? – Maxwe11