Tôi muốn vô hiệu hóa cửa sổ cảnh báo VTK hoặc, tốt hơn, hãy bắt chúng xử lý bằng hệ thống ghi nhật ký của ứng dụng của tôi. Ứng dụng của tôi đang sử dụng chế độ xem được nhúng trong chế độ xem itavi và tôi không muốn cửa sổ lỗi xuất hiện mà tôi không có quyền kiểm soát. Đoạn mã sau thể hiện cửa sổ cảnh báo.Tắt hoặc bắt cảnh báo VTK trong vtkOutputWindow khi nhúng 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, tôi đã thực hiện một số nghiên cứu và phát hiện ra rằng vtk.vtkObject.GlobalWarningDisplayOff()
sẽ tắt hoàn toàn cửa sổ, điều này thật tuyệt. Hơn thế nữa các followingcode sẽ đăng những lời cảnh báo đến một tập tin (tìm thấy nó 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)
Vì vậy, trong khi đây là tốt đẹp, tôi vẫn không thể ống các cảnh báo trực tiếp vào một handler khai thác gỗ. Tôi không muốn có tệp vtk_log bên cạnh tệp nhật ký thông thường của mình. Ngoài ra tôi có thể muốn xử lý các cảnh báo trong GUI của tôi bằng cách nào đó, hoặc cung cấp cho người dùng các tùy chọn về cách xử lý chúng và liên tục xem một tệp nhật ký để thay đổi có vẻ như một cách kém để làm điều đó.
Bất kỳ đề xuất nào về cách thức mạnh mẽ để xử lý cảnh báo vtk trong ứng dụng nhúng mayavi/vtk?
Tôi không có ý tưởng làm thế nào để làm điều này. Nhưng nếu bạn bắt đầu với một hack để làm điều gì đó tốt đẹp, tôi sẽ sử dụng nó. – aestrivex