ユーザーが最初にログインする必要があるアプリケーションを開発しています。QWebEngineView を使用してログイン ページを表示しています。しかし、あるマシンではページが表示されません。SSL エラーがあるかどうかを知りたい。sslerrors シグナルを取得してスロットに接続するにはどうすればよいですか。以下のサンプルコード
from PyQt5.QtNetwork import QSslConfiguration, QSsl
from PyQt5.QtWidgets import QWidget, QGridLayout, QStatusBar, QApplication,\
QMainWindow
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage
from PyQt5.QtCore import QCoreApplication, QMetaObject, QUrl
def set_ssl_protocol():
default_config = QSslConfiguration.defaultConfiguration()
default_config.setProtocol(QSsl.TlsV1_2)
QSslConfiguration.setDefaultConfiguration(default_config)
set_ssl_protocol()
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
self.urlString = "https://www.yahoo.com"
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.webView = QWebEngineView(self.centralwidget)
self.webView=QWebEngineView()
self.webView.setUrl(QUrl("about:blank"))
# self.webView.setUrl(QUrl("http://www.google.com/"))
self.webView.setObjectName("webView")
self.gridLayout.addWidget(self.webView, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.loadURL()
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
def loadURL(self):
if not hasattr(self, 'page'):
self.page = QWebEnginePage()
self.webView.setPage(self.page)
self.page.load(QUrl(self.urlString))
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
注: Qt4 では、page().networkAccessManager().sslerrors シグナルをスロットに接続できるため、非常に簡単でしたが、Qt5 では NetworkAccessManager を介してリクエストが行われないため、デバッグが少し困難です。