Vedo,不清除绘图且不关闭窗口(Python)

问题描述 投票:0回答:1

我正在尝试使用 python 创建一些科学可视化。我使用 vedo 库。我有一组按顺序排列的 vtk 文件,我正在尝试创建一个动画。这是我的代码:

from vedo import *
import os

vtk_files = [file for file in os.listdir() if file.endswith('.vtk')]
vtk_files.sort()  

# Create a Plotter instance
plotter = Plotter()

for i in vtk_files:

    print(i)
 
    mesh = load(i,unpack=True, force=True)

    plotter += mesh

    plotter.show()

    plotter.clear()

    plotter.close()

在循环过程中,会弹出一个绘图窗口,显示第一个 vtk 文件,然后冻结。情节没有被清除,窗口也没有关闭。这意味着plotter.clear() 和plotter.close() 命令不起作用。当我手动关闭绘图窗口时,代码跳转到下一个 vtk 文件,但它没有显示绘图,因为绘图窗口已经关闭。我对另一个可视化包也有同样的问题。是否与这些库使用的绘图模块(Pyqt 或任何小部件)有关?请帮忙。

我已经检查了 vtk 和 vedo 文档,但我找不到问题所在。我在 stack Overflow 和 github 上查了很多问题,但仍然找不到任何东西。

python vtk vedo
1个回答
0
投票

您正在循环内关闭绘图仪。考虑以下选项:

from vedo import *
meshes = load("letter_*.vtk") # sort is done automatically
plotter = Plotter(axes=1)
for i, m in enumerate(meshes):
    m.pos([i*2000, 0, 0]).color(i)
plotter.show(meshes).close()

另一种选择:

import time
from vedo import *
meshes = load("letter_*.vtk")
plotter = Plotter(interactive=False)
plotter.show() # show the empty window
for i, m in enumerate(meshes):
    m.color(i)
    plotter.remove(meshes).add(m)
    plotter.reset_camera().render()
    time.sleep(0.5)
plotter.interactive().close()

将一一可视化您的网格。请注意,对象也可以按名称删除,例如:

mesh.name = "jack"
然后
plotter.remove("jack")
将删除它。

© www.soinside.com 2019 - 2024. All rights reserved.