Есть ли способ интегрировать Pyvista с tkinter?

Я работаю над скриптом Python, в котором он берет файл VTI и отображает данные с помощью pyvista. В текущем состоянии (нажав кнопку на tkinter) он запустит сценарий и отобразит мои данные с помощью pyvista в новом окне. Я пытаюсь отобразить график из pyvista в окне tkinter. Есть способ сделать это?

1 ответ

Да, но это будет непросто.

Во-первых, вам нужно построить VTK с поддержкой TK. См. Подробное обсуждение того, как это сделать: https://discourse.vtk.org/t/error-importing-vtktkrenderwindowinteractor-in-vtk-8-2-0/856

Далее, есть ошибка с vtk==8.2.0 в vtkLoadPythonTkWidgets.py. Заменить все экземплярыvtkCommonCorePython с vtk в файле.

Как только это будет сделано, вот как вы можете использовать pyvista объект плоттера внутри tkinter:

import tkinter
import pyvista

from vtk.tk.vtkTkRenderWindowInteractor import vtkTkRenderWindowInteractor


# Setup for root window
root = tkinter.Tk()
root.title("pyvista tk Demo")

frame = tkinter.Frame(root)
frame.pack(fill=tkinter.BOTH, expand=1, side=tkinter.TOP)

# create an instance of a pyvista.Plotter to be used for tk
mesh = pyvista.Sphere()
pl = pyvista.Plotter()
pl.add_mesh(mesh)

# Setup for rendering window interactor
renwininteract = vtkTkRenderWindowInteractor(root, rw=pl.ren_win,
                                             width=400, height=400)
renwininteract.Initialize()
renwininteract.pack(side='top', fill='both', expand=1)
renwininteract.Start()

# Begin execution by updating the renderer and starting the tkinter
# loop
pl.render()
root.mainloop()
Другие вопросы по тегам