Python代码,用于设置旋转风扇的动画以显示到位
我需要打印出旋转风扇的基础上与PythonPython代码,用于设置旋转风扇的动画以显示到位,python,printing,Python,Printing,我需要打印出旋转风扇的基础上与Python import threading import subprocess I = 0 class RepeatingTimer(threading._Timer): def run(self): while True: self.finished.wait(self.interval) if self.finished.is_set(): retur
import threading
import subprocess
I = 0
class RepeatingTimer(threading._Timer):
def run(self):
while True:
self.finished.wait(self.interval)
if self.finished.is_set():
return
else:
self.function(*self.args, **self.kwargs)
def status():
global I
icons = ['|','/','--','\\']
print icons[I]
I += 1
if I == 4: I = 0
timer = RepeatingTimer(1.0, status)
timer.daemon = True # Allows program to exit if only the thread is alive
timer.start()
proc = subprocess.Popen([ 'python', "wait.py" ])
proc.wait()
timer.cancel()
这段代码的工作原理是我可以显示风扇,但使用回车符显示如下
|
/
--
\
|
/
--
...
在不移动插入符号位置的情况下打印字符的python代码是什么 您可以使用sys.stdout.write打印而不使用新行
sys.stdout.write(icons[I])
\n
(新行)由您的print
语句自动插入。避免这种情况的方法是在语句结尾加逗号
如果您想让您的粉丝自己在线,请使用:
print icons[I]+"\r",
\r
表示回车
如果希望风扇位于非空行的末尾,请使用\b
作为退格字符:
print icons[I]+"\b",
但要小心,除了后面的粉丝角色之外,不要再写别的东西
由于print还有一些其他特性,您可能希望按照kshahar的建议使用sys.stdout.write()
这是一个开始<代码>打印打印换行符
sys.stdout.write
不执行此操作。\b
字符是一个退格,打印不完整的行时,有时需要使用fflush
来刷新缓冲区。您应该能够扩展此方法以非常轻松地使用代码。以下是您的总体解决方案:
import itertools
import sys
import time
def whirl(max=50):
parts = ['|', '/', '-', '\\']
cnt = 1
for part in itertools.cycle(parts):
if cnt >= max:
break
sys.stdout.write(part)
sys.stdout.flush()
time.sleep(.1)
sys.stdout.write('\b')
cnt += 1
你想让风扇的动画出现在适当的位置吗?@juxstapose:是的,没错。我将更新问题。缺少刷新…stdout.flush()+1以显示我
itertools.cycle
我想知道我是否会停止在itertools中查找隐藏的宝石。
import itertools
import sys
import time
def whirl(max=50):
parts = ['|', '/', '-', '\\']
cnt = 1
for part in itertools.cycle(parts):
if cnt >= max:
break
sys.stdout.write(part)
sys.stdout.flush()
time.sleep(.1)
sys.stdout.write('\b')
cnt += 1