Что я хочу сделать, это обновить график майяви в цикле. Я хочу, чтобы обновление графика выполнялось в указанное мной время (в отличие, например, от декоратора анимации).Обновление майяри в петле
Так пример кусок кода, который я хотел бы получить это работает:
import time
import numpy as np
from mayavi import mlab
V = np.random.randn(20, 20, 20)
s = mlab.contour3d(V, contours=[0])
for i in range(5):
time.sleep(1) # Here I'll be computing a new V
V = np.random.randn(20, 20, 20)
# Update the plot with the new information
s.mlab_source.set(scalars=V)
Однако это не показывает фигуру. Если я включу mlab.show()
в цикл, это приведет к краду фокуса и не позволит продолжить код.
Я чувствую, что должен использовать черт рисунок (например, this). Я могу следить за примером приложения признаков, чтобы запустить фигуру, которая обновляется при обновлении ползунков. Однако я не могу его обновить, когда мой код просит его обновить; теперь акцент теперь «украден» на visualization.configure_traits()
.
Будут оценены любые указатели или ссылки на соответствующую документацию.
EDIT
ответ Дэвида Винчестера становится на шаг ближе к решению.
Однако, как я отмечаю в комментариях, я не могу манипулировать фигурой мышью во время шага time.sleep()
. Именно на этом этапе в полной программе компьютер будет занят вычислением нового значения V. За это время я хотел бы иметь возможность манипулировать фигурой, вращать ее с помощью мыши и т. Д.
В моем последнем комментарии вы можете упростить код и манипулировать фигуру во время обновления без 'time.sleep()'. Это сработало для вас? Решение должно быть лучше, чем использование 'wx', поскольку Mayavi портируется на' qt': o –