2016-09-30 47 views
0

我有一个装载功能:如何在函数运行时在Python中显示动画?

def animation(loadingtext): 
    word = list(loadingtext) 
    for i in range(0,len(word)): 
     os.system('cls') 
     lower=word[i-1].lower() 
     word[i-1]=lower 

     caps=word[i].upper()  
     word[i]=caps 

     wordstr=''.join(word) 
     print(wordstr) 
     time.sleep(0.3) 

,我想,而一些工作做是为了显示功能(例如fetcha大SQL查询)。 或者我该如何制作其他加载动画?

在此先感谢帕特里克!

回答

0

首先我不会用system("cls")可言:它清除屏幕时,它可能是有趣的,仍然可以看到写着什么。我只是预先编制\rwordstr

然后要让animation在完成一些其他工作时进行显示,您可以在第二个线程中反复调用它们等待某个事件,并在作业完成时设置该事件。

这里是什么可能看起来像:

def animation(loadingtext): 
    word = list(loadingtext) 
    for i in range(0,len(word)): 
     #os.system('cls') 
     lower=word[i-1].lower() 
     word[i-1]=lower 
     caps=word[i].upper() 
     word[i]=caps 
     wordstr=''.join(word) 
     sys.stdout.write('\r' + wordstr) 
     time.sleep(0.3) 

def start_anim(txt): 
    ev = threading.Event() 
    def _loop(ev, txt): 
     while not ev.is_set(): 
      animation(txt) 
    threading.Thread(target=_loop, args=(ev, txt)).start() 
    return ev 

然后,您可以用这种方式:

ev = start_anim(loadingtext) 
# heavy work - loadingtext is animated on screen 
ev.set() # stop the animation 
+0

非常感谢!真的有帮助!对于其他所有人:您需要在文件顶部添加“导入线程”。并用你的var OR字符串替换“ev = start_anim(loadingtext)”'loadingtext'! :) – Patrick

相关问题