> Да и не очень то хорошая идея использовать sleep в GUI потоке…
Здесь я с тобой не соглашусь. Вообще-то за это руки отрывать надо.
По поводу вопроса. Реализация вывода может быть самая разная. Это и отрисовка непосредственно в момент вызова функции, что встречается редко, буферизация (как было сказано) растра или буферизация команд (координаты, цвета, методы и пр.) с последующим их исполнением ядром граф. библиотеки (как в GDI, если я правильно помню).
Дальше включаем голову и делаем что-то типа такого:
import time
class Foo2DIterator(object):
def __init__(self):
self.start_time = time.time()
self.step_time = 0.5
def __iter__(self):
now_time = time.time()
x = y = 0
while self.start_time <= now_time:
yield x, y
x += 10
y += 20
now_time -= self.step_time
Как исправить
OnPaint и вставить туда
Foo2DIterator сообразишь сам. OnPaint должен вызываться дважды в секудну, естественно не руками, читаешь API по wx и ищешь там методы типа update, refresh, repaint, invalidate и т.д., выбираешь подходящее и вызываешь метод используя таймер (наверняка у wx что-то такое можно найти).
..bw