我正在使用Python中的curses开发项目。
我在stdscr.getmaxyx()
循环中使用while True
来获取当前终端窗口的大小,以便在终端窗口的中心显示文本。
下面的代码按预期工作:运行并调整终端大小时,文本停留在窗口的中心并显示当前终端大小。
import curses
from curses import wrapper
from IPython.core.debugger import Tracer
# debug_here = Tracer()
def main(stdscr):
inp = 'Initial'
while True:
y, x = stdscr.getmaxyx()
curses.curs_set(0)
stdscr.clear()
stdscr.refresh()
stdscr.addstr(int(y/2), int(x/2), '{}x{}'.format(y, x))
stdscr.addstr(int(y/2)+1, int(x/2), inp)
try:
inp = stdscr.getkey()
except curses.error:
inp = '...'
wrapper(main)
取消第4行(debug_here = Tracer()
)的注释时,代码仍然运行,但是在调整大小时终端大小不会更新,因此文本并不总是显示在中间。
您知道是否会发生这种情况,以及发生这种情况的原因?