2013-04-23 6 views
2

я хотел создать поддельную полосу загрузки для игры я создаю, и я пытался использовать команду таймера, как это:Ошибка при использовании таймера в python?

def loading(time): 
    print("loading "+str(time)+"%..") 
t = Timer(1.0, loading(0)) 
t.start() 
a = Timer(3.0, loading(10)) 
a.start() 

Но это не работает (он должен печатать ЗАГРУЗКА 0% АВЭС 1 секунду и загрузка 10% после трех, но он печатает их все немедленно), и это дает эту ошибку:

Exception in thread Thread-1: 
Traceback (most recent call last): 
File "H:\Python\python\App\lib\threading.py", line 736, in _bootstrap_inner 
self.run() 
File "H:\Python\python\App\lib\threading.py", line 942, in run 
self.function(*self.args, **self.kwargs) 
TypeError: 'NoneType' object is not callable 

Не могли бы вы предложить мне какое-то решение этой проблемы или другие методы, чтобы сделать это? Спасибо заранее.

ответ

4

loading(0) вызывает загрузку справа тогда и там.

t = Timer(1.0, lambda: loading(0)) 

должен исправить вашу проблему. Это просто создает lambda (анонимная функция), которая вызывается вместо этого, вызывая вашу функцию.

+0

Работал отлично, спасибо большое! – Tkappa

+0

@ user2311251 Еще одна интересная вещь, которую вы можете сделать с этими загружаемыми сообщениями, - это использование возвратов каретки ('\ r'), они возвращаются к началу строки для печати поверх нее, чтобы сделать загрузочные столбцы – jamylak

+0

Спасибо за отзыв! я загляну в него – Tkappa

Смежные вопросы