Я использую PyQt5 QWebEngineView, чтобы показать веб-сайт в окне, который поддерживает основные функции, такие как открытие нового окна.
Мой код прекрасно работает для window.open (), но для функции window.close () на веб-странице он удаляет ссылку на окно, но окно физически присутствует, если пользователь не закрывает окно вручную.
import sys
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
class MyWindow(QtWebEngineWidgets.QWebEngineView):
currentFile = ''
def __init__(self,windows, parent=None):
super(MyWindow, self).__init__()
self._windows = windows
self._windows.append(self)
self.load(QUrl("https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_win_close"))
self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
self.show()
def createWindow(self, windows):
print(windows)
if windows == QtWebEngineWidgets.QWebEnginePage.WebBrowserTab:
webView = MyWindow(self._windows)
webView.resize(900, 780) # <----
return webView
elif windows == QtWebEngineWidgets.QWebEnginePage.WebDialog:
webView = MyWindow(self._windows)
webView.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
webView.resize(900, 780) # <----
webView.show()
return webView
elif windows == QtWebEngineWidgets.QWebEnginePage.acceptNavigationRequest:
webView = MyWindow(self._windows)
webView.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
webView.resize(900, 780) # <----
webView.show()
return webView
return super(MyWindow, self).createWindow(windows)
if __name__ == "__main__":
app = QApplication(sys.argv)
windows = []
main = MyWindow(windows)
sys.exit(app.exec_())
Когда пользователь нажимает на кнопку с функцией window.close (), окно все еще там, но связано со стеком (я знаю, это потому, что страница не работает)