Vorrei disabilitare la finestra di avviso VTK o, meglio ancora, prenderli per gestire il sistema di registrazione dell'applicazione. La mia applicazione utilizza una visualizzazione mayavi incorporata e non voglio che si verifichi l'errore di Windows che non ho controllo. Il seguente codice mostra la finestra di avviso.Disabilita o Catch avvisi VTK in vtkOutputWindow durante l'incorporamento di Mayavi
import numpy as np
from mayavi import mlab
x1 = np.array([1, 1, 2, 3])
y1 = np.array([1, 1, 4, 2])
z1 = np.array([1, 1, 5, 1])
mlab.plot3d(x1, y1, z1)
mlab.show()
Ok, ho fatto qualche ricerca e ha scoperto che vtk.vtkObject.GlobalWarningDisplayOff()
disabiliterà la finestra completamente, che è bello. Meglio ancora il followingcode registrerà gli avvisi in un file (trovato here):
def redirect_vtk_messages():
""" Can be used to redirect VTK related error messages to a
file."""
import tempfile
tempfile.template = 'vtk-err'
f = tempfile.mktemp('.log')
log = vtkpython.vtkFileOutputWindow()
log.SetFlush(1)
log.SetFileName(f)
log.SetInstance(log)
Così, mentre questo è bello, io sono ancora in grado di tubo gli avvertimenti direttamente in un gestore di registrazione. Preferirei non avere un file vtk_log accanto ai miei normali file di registro. Potrei anche voler gestire gli avvertimenti nella mia GUI in qualche modo, o dare all'utente le opzioni su come gestirli e guardare costantemente un file di log per le modifiche sembra un modo scadente per farlo.
Qualche suggerimento su un robusto modo pythonic per gestire gli avvisi vtk in un'applicazione che incorpora mayavi/vtk?
non ho idea di come fare questo. Ma se vieni con un trucco per fare qualcosa di carino, lo userei. – aestrivex