添加到新窗口的文本在Curses中不可见

时间:2018-05-10 12:45:04

标签: python python-3.x curses python-curses

我正在尝试在此窗口中使用this使用curses添加一个窗口和一个文本,并且:

window.addstr("This is a text in a window")

代码:

class View:
    def __init__(self, ):
        self.stdscr = curses.initscr()
        curses.noecho()
        curses.cbreak()
        self.stdscr.keypad(True)
        # -----------------
        self.add_window_and_str()
        self.add_str()
        # -----------------
        self.stdscr.getkey()
        curses.endwin()

    def add_str(self): #just text in standart screen
        self.stdscr.addstr("test")
        self.stdscr.refresh()

    def add_window_and_str(self):
        scr_limits = self.stdscr.getmaxyx()
        win = curses.newwin(scr_limits[0] - 10, scr_limits[1] - 10, 5, 5)
        win.addstr("Example String")
        win.refresh()
        self.stdscr.refresh()

添加self.add_str的文字是可见的,但"示例字符串"不是。 我如何操纵窗口使文本可见?

1 个答案:

答案 0 :(得分:0)

初始化时,标准屏幕有待更新(清除屏幕)。 refresh末尾的add_window_and_str调用会覆盖win.addstr输出。您可以在第一次调用add_window_and_str之前移动该电话。之后,对stdscr的更改将位于窗口外的部分屏幕中。

还有另一个问题:调用getch刷新关联的窗口。通常会对程序进行组织,以便getch与您希望保留的任何窗口相关联,并且#34;以便其他窗口不会遮挡它们的更新。如果您从win返回add_window_and_str变量,则可以将该窗口与getch一起使用。