当前位置:   article > 正文

PyQt6 与 Pyecharts 交互:必要操作_pyqt pyecharts

pyqt pyecharts

版本信息:

pyecharts 2.0.4

PyQt6 6.6.1

1. 查看.py文件中引用包的位置

参考链接:怎么查看Python包的位置_mob649e8169b366的技术博客_51CTO博客

2. pyqt结合pyecharts

2.1 采用本地资源生成html

步骤一:下载pyecharts-assets-master.zip

下载地址:https://github.com/pyecharts/pyecharts-assets/archive/master.zip

说明:项目文件夹名为class5_3dFigurePyecharts,其中myfigure_main.py为主程序,data_generate.py调用了pyecharts进行作图,myfigure_main调用data_generate。

将下载好的pyecharts-assets-master解压,解压后的文件夹即为pyecharts-assets-master。

pyecharts-assets-master内部文件展示

步骤2:data_generate文件(调用pyecharts作图)

文件前面加如下几行内容:

  1. import os
  2. static_resource = os.path.join(os.path.dirname(__file__), 'pyecharts-assets-master', 'assets')
  3. # windows环境下 \ 替换为 /, *nix环境请按需修改
  4. CurrentConfig.ONLINE_HOST = str(static_resource).replace("\\", r'/') + '/'

myfigure_main文件直接引用data_generate即可,无需特殊处理。

  1. import sys
  2. from PyQt6.QtCore import QUrl, Qt, QFileInfo
  3. from PyQt6.QtWebEngineWidgets import QWebEngineView
  4. from PyQt6.QtWidgets import QApplication, QDialog, QMessageBox
  5. import myfigure # Qt Designer生成的ui界面文件
  6. from data_generate import myplot # 调用pyecharts生成html

参考链接:pyecharts 采用本地静态资源生成html,离线可访问。 - 知乎

2.2 QWebEngineView显示html

html将在widget_figure(QWebEngineView)中展示。

  1. from PyQt6 import QtCore, QtGui, QtWidgets
  2. class Ui_Dialog(object):
  3. def setupUi(self, Dialog):
  4. Dialog.setObjectName("Dialog")
  5. Dialog.resize(1108, 881)
  6. self.widget = QtWidgets.QWidget(parent=Dialog)
  7. self.widget.setGeometry(QtCore.QRect(30, 50, 1041, 801))
  8. self.widget.setObjectName("widget")
  9. self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
  10. self.verticalLayout.setContentsMargins(0, 0, 0, 0)
  11. self.verticalLayout.setObjectName("verticalLayout")
  12. self.label = QtWidgets.QLabel(parent=self.widget)
  13. self.label.setObjectName("label")
  14. self.verticalLayout.addWidget(self.label)
  15. self.widget_figure = QtWebEngineWidgets.QWebEngineView(parent=self.widget)
  16. self.widget_figure.setObjectName("widget_figure")
  17. self.verticalLayout.addWidget(self.widget_figure)
  18. self.verticalLayout.setStretch(0, 1)
  19. self.verticalLayout.setStretch(1, 20)
  20. self.retranslateUi(Dialog)
  21. QtCore.QMetaObject.connectSlotsByName(Dialog)
  22. def retranslateUi(self, Dialog):
  23. _translate = QtCore.QCoreApplication.translate
  24. Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
  25. self.label.setText(_translate("Dialog", "My Figure"))
  26. from PyQt6 import QtWebEngineWidgets

这里没有复杂处理,仅展示一个已经生成的html图作为示范。

  1. from PyQt6.QtWidgets import QApplication, QDialog, QMessageBox
  2. import sys
  3. import myfigure
  4. from PyQt6.QtCore import QUrl, Qt, QFileInfo
  5. from data_generate import myplot
  6. class Ui_3DFigure(myfigure.Ui_Dialog, QDialog):
  7. def __init__(self):
  8. super().__init__()
  9. self.setupUi(self)
  10. myplot()
  11. url = QUrl("file:" + QFileInfo("all_figures.html").absoluteFilePath())
  12. self.widget_figure.load(url)
  13. self.show()

2.3 pyinstaller

问题一:打包报错:No such file or directory: 'C:\\Users\\x\\AppData\\Local\\Temp\\_MEI6362\\pyecharts\\datasets\\map_filename.json'

问题二:运行后显示空白,assets文件夹没有包进去

参考链接:解决办法之pyinstaller打包pyecharts报错问题_python pyinstaller filenotfounderror: [errno 2] no-CSDN博客

打包时要使用--add-data命令,解决问题一和二。

打包命令:(其中pyecharts包所在位置查询参考<1>)

pyinstaller -F -w myfigure_main.py --add-data C:\Users\q00573389\AppData\Roaming\Python\Python39\site-packages\pyecharts\render\templates;pyecharts/render/templates --add-data C:\Users\q00573389\AppData\Roaming\Python\Python39\site-packages\pyecharts\datasets;pyecharts/datasets --add-data pyecharts-assets-master\assets;pyecharts-assets-master/assets

问题三:本机运行正常,用pyinstaller打包为exe程序,换另一台win10电脑,运行exe程序,不显示QWebEngineView界面,QWidgets能正常显示。

参考链接:

python - QWebEngineView not showing anything on Windows 10 - Stack Overflow

pyqt5 - QWebEngineView not working with PyInstaller - Stack Overflow

解决方法:增加环境变量QTWEBENGINE_DISABLE_SANDBOX

3. 交互1: 将鼠标点击html页面某点时的提示框信息在PyQt界面显示

 PyQt6与Pyecharts交互:将鼠标点击html页面某点时的提示框信息在PyQt界面显示-CSDN博客

4. 交互2:增加进度条显示网页加载进度

PyQt6与Pyecharts交互:增加进度条显示网页加载进度-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/570776
推荐阅读
相关标签
  

闽ICP备14008679号