1

私は、VTI ファイルを取得し、pyvista を使用してデータをプロットする python スクリプトに取り組んでいます。現在の状態 (tkinter のボタンをクリック) で、スクリプトを実行し、新しいウィンドウで pyvista を使用してデータをプロットします。私が達成しようとしているのは、pyvista からのプロットを tkinter ウィンドウに表示することです。これを行う方法はありますか?

4

1 に答える 1

2

はい、しかし簡単ではありません。

まず、TK をサポートする VTK をビルドする必要があります。その方法については、こちらの長い議論を参照してください: https://discourse.vtk.org/t/error-importing-vtktkrenderwindowinteractor-in-vtk-8-2-0/856

vtk==8.2.0次に、 の時点でバグがありvtkLoadPythonTkWidgets.pyます。vtkCommonCorePythonファイル内のすべてのインスタンスをwithに置き換え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()
于 2020-05-27T05:22:49.963 に答える