Я пытаюсь отобразить графический 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
Графическая загрузка графика в PySide6 ⇐ Python
Программы на Python
1730849604
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())
Подробнее здесь: [url]https://stackoverflow.com/questions/79160988/plotly-graph-loading-in-pyside6[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия