我有一个加载功能:
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 big SQL-Query)。 或者我如何制作其他一些加载动画?
先谢谢帕特里克!
答案 0 :(得分:0)
首先,我根本不会使用system("cls")
:当看到写的内容可能会很有趣时,它会清除屏幕。我只会将\r
添加到wordstr
。
然后让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