python - 带有 Ipywidgets 和交互式图形的 Pyqt5/Pyside 应用程序

标签 python pyqt5 jupyter ipywidgets plotly-python

我正在构建一个 GUI(pyqt 或 pyside)来为用户轻松创建复杂的图形(例如使用 plotly)。 到目前为止一切顺利,我运行数据处理并生成以 html 格式导出并由 QwebEngineView 读取的绘图图。我什至创建了一个 qt 小部件供用户编辑布局(见下图)。

enter image description here

问题在于以下过程中的长时间延迟(几秒): 更新布局 -> 导出到临时 html 文件 → 打开并在 GUI 上呈现文件。 我想通过布局编辑获得更好的 GUI 体验。

跟随这个伟大的Jon Mease talk我发现我的绘图可以使用同样出色的 ipywidgets 实时更新。 ,但仅限于 Jupyter 笔记本/实验室环境。也就是说,将 widgets+figure 导出到 html 文件会呈现所有元素,但由于 widgets 缺少 python 后端(在独立的 html 文件中),它们不会与 figure 的布局交互。

但是,我的应用程序是在 python 进程上运行的,所以我觉得这应该是一个可以解决的问题...

Qtconsole不会渲染 ipywidgets,所以我不能用它在 GUI 中显示我的图形。

Voila呈现带有交互式小部件的 Jupyter 笔记本,但我不确定是否可以访问它并将其合并到 GUI 中。它说它既可以作为“独立的 Tornado 应用程序”,也可以作为“笔记本或 jupyter_server 的服务器扩展”。

我知道可能没有最终的解决方案,但如果有任何关于如何解决此问题的建议,我将不胜感激!谢谢!

最佳答案

我最终为这个问题创建了一个解决方案:QtVoila

它基本上是一个扩展的 QWebEngineView,用于管理和呈现 Voila 进程,并具有一些额外的功能。

这是一篇解释它的博文:
https://www.taufferconsulting.com/portfolio/qtvoila

关于python - 带有 Ipywidgets 和交互式图形的 Pyqt5/Pyside 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58233826/

相关文章:

python - 无法将 Pandas DataFrame 列数据类型转换为特定大小的字符串 (|S2)

python - pip上传脚本或模块

pyqt5 - 从主窗口上的一个按钮弹出对话框,PyQt5

python - 为什么我的循环在 HTML 中没有显示出好的结果?

python - cv2.imshow() 崩溃内核

python - 如果已创建 dask.distributed 客户端,则 xarray.open_mfdataset() 不起作用

python - 如何与非程序员共享 Jupyter 笔记本?

python - Leetcode同一棵树

python - 随机选择一个包含特定元素的列表

python - 导入错误 : No module named PyQt5 - OSX Mavericks