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