LINUX.ORG.RU

time.sleep() вешает pygtk


0

0

Как сделать, чтобы gtk интерфейс не вешался при использовании time.sleep()? Вариант с использованием python threads отпадает.

#В строке состояния создаётся небольшая "анимация" из простого текста
def comp_dosleep(self):
random.seed()
randy=random.randint(0,7)
string="Компьютер думает"
times=5
to_sleep=0.6
for i in range(times+randy):
string=string+"."
context_id = self.statusbar1.get_context_id("Ход")
message_id = self.statusbar1.push(context_id,string)
time.sleep(to_sleep)
to_sleep=to_sleep-0.05

★★★★

#В строке состояния создаётся небольшая "анимация" из простого текста
def comp_dosleep(self):
    random.seed()
    randy=random.randint(0,7)
    string="Компьютер думает"
    times=5
    to_sleep=0.6
    for i in range(times+randy):
        string=string+"."
        context_id = self.statusbar1.get_context_id("Ход")
        message_id = self.statusbar1.push(context_id,string)
        time.sleep(to_sleep)
        to_sleep=to_sleep-0.05

Selecter ★★★★
() автор топика
Ответ на: комментарий от Selecter

Что написал, то и делает. Если ты говоришь процессу спать, то он в это время спит, а не картинку рисует.

Для того, чтобы правильно сделать твою анимацию, нужно добавлять timeout и в нем изменять окошки, а управление возвращать в цикл событий. Посмотри в gtk+/examples/progressbar.

anonymous
()
Ответ на: комментарий от Selecter

Все можно, делаешь просто в каждом timeout-е еще раз timeout_add и возвращаешь FALSE.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.