我是第一次尝试诅咒,并为游戏编写了一个简单的菜单。我阅读了有关使用垫子和窗户的信息,并成功地编写了一些简单的程序。现在我遇到了一个问题。
这是一个产生相同问题的小例子:
import curses
def main(term):
win1 = curses.newwin(5, 10, 5, 5)
win2 = curses.newwin(5, 10, 11, 5)
for y in range(5):
win1.insstr(y, 0, "0"*10)
win2.insstr(y, 0, "1"*10)
term.getch()
win1.getch()
term.getch()
win2.getch()
term.getch()
win1.getch()
curses.wrapper(main)
我对Windows的最初理解是,它们将数据分别保存到整个终端,并在刷新时显示它们。我没有在任何窗口上调用refresh
,因为我读到getch
会自动执行此操作。因此,我期望在反复敲击一个键时发生的事情是:空白,win1可见但不win2,空白,win2可见但不win1,空白,win1可见但不win2,终止。实际发生的情况是:空白,win1可见但win2不可见,win1可见但win2不可见,两者,两者都终止。
这使我认为刷新窗口时,它们的内容已粘贴到term
中,并且由于从未清除过term
,因此它们会停留在该位置。情况并非如此,因为如果我改为这样做:
win1.getch()
term.getch()
win2.getch()
term.getch()
win1.getch()
我得到:win1可见但win2不可见,空白,win2可见但win1直到终止。
显示了win1,然后按预期消失了,但是再也没有出现,并且win2永不消失。显然,我对诅咒的心理模型已经过时了。