Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 24, 2018 21:17:32

elvanov
Зарегистрирован: 2018-09-24
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt: Не работают ссылки в QWebView

Пытаюсь интегрировать веб-сервис в приложение. Для этого в QWebView открываю HTML с JS кодом (в дальнейшем планируется вызов функций JS и отслеживание сигналов от JS), но почему-то не работают ссылки. При щелчке по ссылкам ничего не происходит. Также попытки отладки через QWebInspector приводят к зависанию приложения. В браузере HTML страница работает нормально.

Linux, Qt/PyQt 5.10.1, Python 3.6.5.

Может, подскажете что не так?

Тестовый код

 import os
import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKit import QWebSettings
from PyQt5.QtWebKitWidgets import QWebView, QWebInspector, QWebPage
filePath = os.path.join(os.path.dirname(__file__), 'index.html')
app = QApplication(sys.argv)
webView = QWebView()
QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True)
QWebSettings.globalSettings().setAttribute(QWebSettings.LocalContentCanAccessRemoteUrls, True)
webView.page().settings().setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
inspector = QWebInspector()
inspector.setPage(webView.page())
content = ''
with open(filePath, 'rb') as f:
    content = f.read()
webView.setContent(content)
webView.show()
app.exec_()
Вот HTML файл, который открываю
 <html>
  <head>
    <script type="text/javascript" src="https://cdn.3dmapping.cloud/18.1.4/javascript/orbitgt_3dm_sdk.js"></script>
  </head>
  <body >
    <div id="app">
    <script type="text/javascript">
      var viewer;
      function handleReady() {
        viewer.setSize(600,400);
      }
      function handleDOMReady() {
        var applicationName = "QGIS Orbit plugin";
        var appElement = document.getElementById("m3dviewer");
        viewer = new orbitgt.mapping3d.sdk.viewer.SDKViewer(applicationName, appElement);
        viewer.isReady.then(handleReady);
      }
      document.addEventListener("DOMContentLoaded", handleDOMReady);
    </script>
    <div id="m3dviewer"/>
  </body>
</html>

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version