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

Pyqt5/Pyside application with Ipywidgets and Interactive figures

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

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

跟随这个伟大的 Jon Mease talk I discovered my plotly figures could be updated in real time using the also great ipywidgets,但仅限于 Jupyter 笔记本/实验室环境。也就是说,将 widgets+figure 导出到 html 文件会呈现所有元素,但由于 python 后端将缺少小部件(在独立的 html 文件中),它们不会不要与图形的布局交互。

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

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

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

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

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

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

这里有一篇博客 post 解释了它的实现:
https://luiztauffer.github.io/guacamole-data-science/posts/2020-04-20-qtvoila/