sfx*_*sfx 1 python curses python-2.7
我是诅咒的新手,但我写了一个工作的小诅咒应用程序.但过了一会儿,我注意到我的默认终端设置在会话期间被更改了.背景颜色是纯黑色,但我配置了透明终端.颜色看起来更像白色而不是灰色.
我的代码,但我确定它与问题无关.我正在使用debian wheezy和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
Run Code Online (Sandbox Code Playgroud)
小智 6
我想我应该回答这个问题,因为我以前一直在寻找这个.
在main(),您需要添加
curses.use_default_colors()
这将使用终端的颜色而不是curses'覆盖它们.这意味着如果未设置背景颜色,背景颜色将是透明的.
如果稍后要创建具有透明背景的颜色对,而不是例如
curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLACK)
使用
curses.init_pair(1, curses.WHITE, -1)
这将使用默认背景,即透明.