Графическая загрузка графика в PySide6Python

Программы на Python
Ответить
Anonymous
 Графическая загрузка графика в PySide6

Сообщение Anonymous »

Я пытаюсь отобразить графический html-файл в pyside6, но получаю пустой компонент там, где должен быть графический график. Если я попытаюсь загрузить сгенерированный файл в веб-браузер, он сработает.
import os
import sys
import signal
from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QVBoxLayout
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtWebEngineCore import QWebEngineSettings
from PySide6.QtWebEngineCore import QWebEnginePage
from PySide6.QtCore import QUrl

import plotly.express as px
import pandas as pd

# Sample data
data = {
'region': ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California'],
'value': [10, 20, 30, 40, 50],
'iso_code': ['US-AL', 'US-AK', 'US-AZ', 'US-AR', 'US-CA']
}

# Create DataFrame
df = pd.DataFrame(data)

# Create choropleth map
fig = px.choropleth(
df,
locations='iso_code', # Column with region codes (ISO codes)
color='value', # Column with values to map color intensity
locationmode="USA-states", # Specify location mode (e.g., "USA-states" for US)
scope="usa", # Limit map scope
color_continuous_scale="Blues"
)

# Save map to HTML
html_content = fig.to_html(full_html=True)

# Create a custom page class to catch console messages
class WebEnginePage(QWebEnginePage):
def javaScriptConsoleMessage(self, level, message, lineNumber, sourceID):
print(f"JS Console: {message} (Source: {sourceID}, Line: {lineNumber})")

class MainWindow(QMainWindow):
def __init__(self):
super().__init__()

# Set up main tab widget
self.tab_widget = QTabWidget()
self.setCentralWidget(self.tab_widget)

# Add choropleth map tab
self.add_choropleth_tab()

def add_choropleth_tab(self):
# Create widget for the tab
tab = QWidget()
layout = QVBoxLayout()

# Create QWebEngineView and load the HTML file
web_view = QWebEngineView()

# Enable JavaScript
web_view.settings().setAttribute(QWebEngineSettings.WebAttribute.JavascriptEnabled, True)
web_view.settings().setAttribute(QWebEngineSettings.WebAttribute.LocalContentCanAccessFileUrls, True)
web_view.settings().setAttribute(QWebEngineSettings.WebAttribute.LocalContentCanAccessRemoteUrls, True)

html_file_path = os.path.abspath("choropleth_map.html")
local_url = QUrl.fromLocalFile(html_file_path)

web_view.load(local_url)

web_view.setPage(WebEnginePage())
web_view.setHtml(html_content)
layout.addWidget(web_view)

tab.setLayout(layout)
self.tab_widget.addTab(tab, "Choropleth Map")

app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())


Подробнее здесь: https://stackoverflow.com/questions/791 ... in-pyside6
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»