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

Lui*_*fer 5 python pyqt5 jupyter ipywidgets plotly-python

I\xe2\x80\x99m 构建一个 GUI(pyqt 或 pyside),以便为用户轻松创建复杂的图形(例如,使用绘图)。\n到目前为止一切顺利,我运行数据处理并生成导出为 html 并读取的绘图图形经过QwebEngineView。我什至创建了一个 qt 小部件供用户进行布局编辑(见下图)。

\n\n

在此输入图像描述

\n\n

问题是在以下过程中存在较长的延迟(几秒钟):\n更新布局 -> 导出到临时 html 文件\xe2\x86\x92 打开并在 GUI 上渲染文件。\n我想制作一个更好的布局编辑的 GUI 经验。

\n\n

在Jon Mease 的演讲之后,我发现我的绘图可以使用同样出色的ipywidgets进行实时更新,但仅限于 Jupyter 笔记本/实验室环境。也就是说,将 widgets+figure 导出到 html 文件会渲染所有元素,但由于 python 后端将缺少 widgets(在独立的 html 文件中),因此它们不会\xe2\x80\x99t 与figure\xe2\ 交互x80\x99s 布局。

\n\n

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

\n\n

Qtconsole不会渲染 ipywidgets,所以我可以使用它在 GUI 中公开我的图形。

\n\n

使用交互式小部件渲染 Jupyter 笔记本,但我不确定是否可以访问它并将其合并到 GUI 中。它说它既可以作为 \xe2\x80\x9c 独立龙卷风应用程序 \xe2\x80\x9d 工作,也可以作为 \xe2\x80\x9cserver 笔记本或 jupyter_server\xe2\x80\x9d 的扩展。

\n\n

我\xe2\x80\x99m知道\xe2\x80\x99s可能不是最终的解决方案,但我将不胜感激任何关于如何解决这个问题的建议!谢谢!

\n

Lui*_*fer 5

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

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

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