Skip to main content
 首页 » 编程设计

python curses 终端设置已更改

2025年05月04日20lovecherry

我对 curses 很陌生,但我写了一个可以工作的小 curses 应用程序。但过了一会儿,我注意到我的默认终端设置在 session 期间发生了变化。背景颜色是纯黑色,但我配置了一个透明终端。而且颜色看起来更像白色而不是灰色。

我的代码,但我确定它与问题无关。 我在 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)

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