Я всегда предпочитал больше pythonic tvtk над необработанным API Python vtk, но с последними версиями, которые я получаю от MacPorts, у меня есть проблема, что основные вещи больше не работают. Следующий фрагмент взят из tvtv documentation:Как исправить «TraitError: черта« ввода »экземпляра ... является« только для чтения ».»
from tvtk.api import tvtk
cs = tvtk.ConeSource()
cs.resolution = 36
m = tvtk.PolyDataMapper()
m.input = cs.output # <== fails here
a = tvtk.Actor()
a.mapper = m
p = a.property
p.representation = 'w'
print p.representation
С каждой инициализации признаков «вход», я получаю сообщение об ошибке, как
TraitError: The 'input' trait of a PolyDataMapper instance is 'read only'.
Я нашел много подобных вопросов, сообщения об ошибках и т.д., но все они указывают на изменения, связанные с ВТК 6 (SetInputData
и SetInputConnection
вместо SetInput
), который should be supported in Mayavi 4.4.2, и я имею:
vtk @6.3.0_0+python27 (active)
py27-traits @4.5.0_0 (active)
py27-traitsui @5.0.0_0 (active)
py27-apptools @4.3.0_0 (active)
py27-envisage @4.4.0_0 (active)
py27-pyface @5.0.0_0+pyqt4 (active)
py27-mayavi @4.4.3_0 (active)
PolyDataMapper
имеет следующую входную-черту:
'input': <traits.traits.CTrait at 0x11b23a260>,
'input_algorithm': <traits.traits.CTrait at 0x119516520>,
'input_as_data_set': <traits.traits.CTrait at 0x11b230470>,
'input_connection': <traits.traits.CTrait at 0x119516310>,
'input_executive': <traits.traits.CTrait at 0x1195165d0>,
'input_information': <traits.traits.CTrait at 0x119516680>,
Косвенно выше, содержит ответ, который я искал, а именно "правильный" новый API. Меня не интересует поддержка VTK 5, но я не видел, как этот код нужно адаптировать. Из ссылки кажется, что для случая отсутствия соединения нет никакой черты, но 'set_input_data (some_data)' - это то, что мне не хватало. –