2012-04-17 17 views
1

私はcursesにはかなり新しいですが、動作する小さなcursesアプリケーションを作成しました。しかし、しばらくして、セッション中に私のデフォルトの端末設定が変更されていることに気付きました。背景色は黒ですが、透明な端末を設定しました。また、色はグレーよりも白に似ています。python cursesの端末設定が変更されました

私のコードですが、問題に関係していないと確信しています。 私は前にこれを見てきたので、私は、これに答える必要があります考え出し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

のpythonと喘鳴のdebianを使用しています。 main()

は、あなたがこれは呪いがそれらを上書きするのではなく、お使いの端末の色を使用します

curses.use_default_colors()

を追加する必要があります。これは、背景色が設定されていない場合、背景色が透明になることを意味します。

後に、あなたは透明な背景と色のペアを作成したい、もし、代わりに、例えば

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

使用

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

これがデフォルトの背景を使用します、透明である。

+1

'curses.use_default_colors()'は 'curses.can_change_color()== False'でも動作します。このコマンドは、すべてのアプリケーションでデフォルトにする必要があります。 –

関連する問題