我如何使用 Python Curses 一次打印一个字母的字符串?
How would I print out a string one letter at a time using Python Curses?
对于我的控制台应用程序中的某些样式,我经常使用如下代码一次打印一个字符的字符串:
import time
def run():
the_string = "Hello world!"
for char in the_string:
print(char, end='', flush=True)
time.sleep(0.1)
input()
run()
我希望对 Python Curses 做同样的事情,这样我就可以在应用程序的其他方面有更多的灵活性。这是我目前所拥有的:
import curses
import time
def run(stdscr):
stdscr.clear()
the_string = "Hello world!"
for char in the_string:
stdscr.addstr(char)
time.sleep(0.1)
stdscr.getch()
curses.wrapper(run)
问题是这只是等待 for 循环的持续时间,然后再将文本放在控制台上。不同之处在于 flush=True
,因此我尝试在函数的几个不同位置包含 curses.flushinp()
,但没有任何区别。
将字符串写入屏幕后需要调用stdscr.refresh()
刷新屏幕
import curses
import time
def run(stdscr):
stdscr.clear()
the_string = "Hello world!"
for char in the_string:
stdscr.addstr(char)
stdscr.refresh()
time.sleep(0.1)
stdscr.getch()
curses.wrapper(run)
如您所愿,效果很好。
对于我的控制台应用程序中的某些样式,我经常使用如下代码一次打印一个字符的字符串:
import time
def run():
the_string = "Hello world!"
for char in the_string:
print(char, end='', flush=True)
time.sleep(0.1)
input()
run()
我希望对 Python Curses 做同样的事情,这样我就可以在应用程序的其他方面有更多的灵活性。这是我目前所拥有的:
import curses
import time
def run(stdscr):
stdscr.clear()
the_string = "Hello world!"
for char in the_string:
stdscr.addstr(char)
time.sleep(0.1)
stdscr.getch()
curses.wrapper(run)
问题是这只是等待 for 循环的持续时间,然后再将文本放在控制台上。不同之处在于 flush=True
,因此我尝试在函数的几个不同位置包含 curses.flushinp()
,但没有任何区别。
将字符串写入屏幕后需要调用stdscr.refresh()
刷新屏幕
import curses
import time
def run(stdscr):
stdscr.clear()
the_string = "Hello world!"
for char in the_string:
stdscr.addstr(char)
stdscr.refresh()
time.sleep(0.1)
stdscr.getch()
curses.wrapper(run)
如您所愿,效果很好。