2012-04-17 59 views
1

我对诅咒很新,但我写了一个工作小诅咒应用程序。但过了一段时间后,我发现在会话期间我的默认终端设置被更改了。背景颜色是纯黑色,但我配置了透明终端。此外,颜色看起来更像白色而不是灰色。蟒蛇诅咒终端设置改变

我的代码,但我相信它与问题无关。 我使用Debian喘息与Python 2.7.2

#!/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 

回答

5

我想我应该回答这个问题,因为我一直在看着面前这一点。

main(),你需要添加

curses.use_default_colors()

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

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

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

使用

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

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

+1

+1使用'curses.use_default_colors()',如果使用'curses.can_change_color()== False'也可以。该命令应该是每个应用程序的默认值。 – 2013-02-01 11:54:58