python - python中简单RGB动画的问题
问题描述
我正在尝试用 python 制作一个简单的 RGB 动画,但我遇到了一些困难。
问题确实是输出,这与我想要的完全错误。
代码:
def animation(message):
def yuh():
while True:
colors = dict(Fore.__dict__.items())
for color, i in zip(colors.keys(), range(20)):
sys.stdout.write(colors[color] + message + "\r")
sys.stdout.flush()
sys.stdout.write('\b')
time.sleep(0.5)
threading.Thread(target=yuh).start()
def menu():
animation("Hello Please select a option !")
print("1 -- Test")
qa = input("Answer?: ")
if qa == 1:
print("You did it !")
sys.exit()
menu()
输出:
1 -- Test
Hello Please select a option !a option !
我最初的想法是输出看起来像这样:
Hello Please select a option !
1 -- Test
Answer?:
我怎么能做到这一点?
解决方案
这是因为光标停留在最后一个打印/输入功能结束的地方。所以在 menu() 的第 3 行之后,光标在 "Answer?:" 的末尾,即首先打印消息的地方,在 "\r" 回车之后将光标拉到行首。不过有一个解决方案:
def animation(message):
def yuh():
while True:
colors = dict(Fore.__dict__.items())
for color, i in zip(colors.keys(), range(20)):
sys.stdout.write("\x1b7\x1b[%d;%df%s\x1b8" % (0, 0, colors[color] + message + "\r"))
sys.stdout.flush()
sys.stdout.write('\b')
time.sleep(0.5)
threading.Thread(target=yuh).start()
def menu():
animation("Hello Please select a option !")
print("1 -- Test")
qa = input("Answer?: ")
if qa == 1:
print("You did it !")
sys.exit()
menu()
您可能需要编辑坐标,但除此之外它应该可以工作!
推荐阅读
- remote-debugging - virt manager 中的直接内核引导选项
- tensorflow - “使用 TensorFlow 后端”。这是一个错误吗?
- python - 在 Pandas 中连接两个 groupby 数据框时出错
- amazon-web-services - 保护 AWS S3 对象免受直接 url 访问
- sql-server - SQL Server:当 Else 为 case 时,在 CASE 子句中默认显示为 0
- java - 在 sql、事务和数据库文件锁定中搜索
- java - Euler059:如何从解密的可能性中选择有效的消息?
- python - 如何仅在使用 Python 找到某种模式后才能读取 csv 文件?
- visual-studio - 如何修复 jni.h 抛出“stdio.h 找不到文件错误”
- python - 用按钮临时替换整个 GUI?