2012-04-17 57 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