Attribute BOLD doesn't seem to work in my curses

牧云@^-^@ 提交于 2020-01-10 05:12:22

问题


I use something like this: screen.addstr(text, color_pair(1) | A_BOLD), but it doesn't seem to work.. However, A_REVERSE and all others attribute does work!

In fact, I'm trying to print something in white, but the COLOR_WHITE prints it gray.. and after a while of searching, it seems that printing it gray + BOLD makes it!

Any helps would be greatly appreciated.


回答1:


Here's an example code (Python 2.6, Linux):

#!/usr/bin/env python
from itertools import cycle
import curses, contextlib, time

@contextlib.contextmanager
def curses_screen():
    """Contextmanager's version of curses.wrapper()."""
    try:
        stdscr=curses.initscr()
        curses.noecho()
        curses.cbreak()
        stdscr.keypad(1)
        try: curses.start_color()
        except: pass

        yield stdscr
    finally:
        stdscr.keypad(0)
        curses.echo()
        curses.nocbreak()
        curses.endwin()

if __name__=="__main__":
    with curses_screen() as stdscr:
        c = curses.A_BOLD
        if curses.has_colors():
            curses.init_pair(1, curses.COLOR_GREEN, curses.COLOR_BLACK)
            c |= curses.color_pair(1)

        curses.curs_set(0) # make cursor invisible

        y, x = stdscr.getmaxyx()
        for col in cycle((c, curses.A_BOLD)):
            stdscr.erase()
            stdscr.addstr(y//2, x//2, 'abc', col)
            stdscr.refresh()
            time.sleep(1)

All seems to be working.




回答2:


I tried this: screen.addstr(text, curses.color_pair(1) | curses.A_BOLD) and it worked!

So just add curses. and it should do the trick. Of course at the beginning use: import curses



来源:https://stackoverflow.com/questions/327026/attribute-bold-doesnt-seem-to-work-in-my-curses

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!