python - 有没有办法将 Pyvista 与 tkinter 集成?

标签 python tkinter pyvista

我正在编写一个 python 脚本,它需要一个 VTI 文件并使用 pyvista 绘制数据。在当前状态下(单击 tkinter 上的按钮),它将运行脚本并在新窗口中使用 pyvista 绘制我的数据。我试图实现的目标是在 tkinter 窗口中显示 pyvista 的绘图。有办法做到这一点吗?

最佳答案

是的,但这并不容易。

首先,您需要构建具有 TK 支持的 VTK。有关如何执行此操作的信息,请参阅此处的冗长讨论:https://discourse.vtk.org/t/error-importing-vtktkrenderwindowinteractor-in-vtk-8-2-0/856

接下来,从 vtk==8.2.0 开始,vtkLoadPythonTkWidgets.py 中存在一个错误。将文件中的所有 vtkCommonCorePython 实例替换为 vtk

完成后,您可以在 tkinter 中使用 pyvista 绘图仪对象:

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()

关于python - 有没有办法将 Pyvista 与 tkinter 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60649673/

相关文章:

python - 为什么添加文本框后 Tkinter 框架会调整大小?

python - tkinter-调整彩色图像大小时,仅以红色显示

python - 使用颜色列表中的 for 循环更改 Tkinter 框架颜色

python - 网格到填充体素网格

python - 如何对第二列定义的固定间隔内一列的元素求和?

python - 如何将来自 python 的值插入 html 文件的主体部分?

python - 使用Python脚本查找IP和网关

python-3.x - Pyvista 曲面图?

python - 如何以立体方式显示 3D 渲染?

python - 以编程方式清理/忽略 XML 中的 namespace - python