我对curses相当陌生,但是我编写了一个有效的curses小应用程序。但是过了一会儿,我注意到我的默认终端设置在会话期间已更改。背景颜色是纯黑色,但是我已经配置了透明端子。而且颜色看起来更像白色而不是灰色。

我的代码,但是我确定它与问题无关。
我在python 2.7.2中使用debian wheezy

#!/usr/bin/env python

import curses

class Monitor:
    def __init__(self, screen):
        self.screen = screen
        self.height, self.width = self.screen.getmaxyx()
        self.screen.nodelay(1)

    def redraw(self):
        self.screen.clear()
        self.screen.addstr(1, 1, 'hai')
        self.screen.refresh()

    def main(self):
        while 1:
            key = self.screen.getch()
            if key == ord('q'): break
            self.redraw()

def main(stdscr):
    mon = Monitor(stdscr)
    mon.main()

if __name__ == '__main__':
    try:
        curses.wrapper(main)
    except KeyboardInterrupt:
        pass

最佳答案

我想我应该回答这个问题,因为我以前一直在寻找这个问题。

main()中,您需要添加

curses.use_default_colors()

这将使用终端的颜色,而不是curses覆盖它们的颜色。这意味着如果未设置背景色,则背景色将是透明的。

如果以后要创建一个具有透明背景的颜色对,而不是例如

curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK)

使用

curses.init_pair(1, curses.WHITE, -1)

这将使用默认背景,即透明。

关于python - python curses终端设置已更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10194555/

10-12 21:01