我有一个使用子窗口的 curses 应用程序,但我似乎无法删除它们。
例如,此代码不起作用:
import curses
def fill(window, ch):
y, x = window.getmaxyx()
s = ch * (x - 1)
for line in range(y):
window.addstr(line, 0, s)
def main(stdscr):
fill(stdscr, 'M')
stdscr.refresh()
stdscr.getch()
subwin = stdscr.subwin(1, 28, 20, 13)
fill(subwin, 'J')
subwin.refresh()
subwin.getch()
del subwin
stdscr.touchwin()
stdscr.refresh()
stdscr.getch()
curses.wrapper(main)
当您运行此代码时,屏幕会填充“M”,然后当您按下某个键时,会创建一个子窗口并填充“J”。最后,当您再次按下某个键时,代码会删除子窗口并完全重绘屏幕。但是,那些Js还在。
经过一些实验,我发现调用 stdscr 的 clear() 方法会使子窗口消失,但我想将背景恢复原样,而不是将其清空和重写。有谁知道可以做到这一点的方法?