Вот что у меня в итоге получилось:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import webbrowser
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
import sys
from PyQt5 import QtCore, QtWidgets
s = str("""<html><head></head><body>Привет мир!!!</body></html>""")
s2 = str("""<html><head></head><body>Прощай мир!!!</body></html>""")
onOff = True
def clikbtn():
MainWindow.mypage.setHtml(s)
# Что то должно произойти
class MainWindow(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
self.resize(700, 500)
self.view = QWebEngineView(self)
mypage = MyPage(self.view)
self.view.setPage(mypage)
#mypage.setHtml(s)
combo = QComboBox(self)
combo.addItems(['s', 's2'])
combo.move(50, 50)
#self.lbl.move(50, 150)
combo.activated[str].connect(self.onActivated)
btn = QPushButton('Обовить страницу', self)
btn.setToolTip('This is a <b>QPushButton</b> widget')
btn.resize(btn.sizeHint())
btn.move(10, 370)
grid = QGridLayout()
grid.addWidget(self.view, 0, 0)
self.setLayout(grid)
btn.clicked.connect(self.clikbtn) # Кнопка обновления карты
self.show()
def clikbtn(self):
self.view.reload()
def onActivated(self, text):
if text == "s":
self.view.setHtml(s)
elif text == "s2":
self.view.setHtml(s2)
# Что то должно произойти
class MyPage(QWebEnginePage):
def __init__(self, parent):
super().__init__(parent)
self.in_window = False # придумал переменную
def createWindow(self, type): # которую мы
self.in_window = True # тутже изменяем если просится
return self # открытие в новом окне
def acceptNavigationRequest(self, QUrl, type, isMainFrame):
url_string = QUrl.toString()
print(type, isMainFrame, QUrl)
if self.in_window and type==2 and url_string != "https://yandex.ru":
webbrwser.open(url_string)
self.in_window = False
self.setHtml(s)
return True
if __name__ == '__main__':
app = None
if not QApplication.instance():
app = QApplication([])
dlg = MainWindow()
if app: app.exec_()