Python curses 模块,initscr() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用curses.initscr()

项目:HTP    作者:nklose    | 项目源码 | 文件源码
def __init__(self, file):
        self.file = file
        self.scr = curses.initscr()
        self.scr.border()
        self.scr_height, self.scr_width = self.scr.getmaxyx()
        self.text_win = curses.newwin(self.scr_height - 1, self.scr_width, 1, 0)
        self.file_text = file.content
        if self.file_text != None:
            self.text_win.addstr(self.file_text)
        curses.noecho()
        #curses.start_color()
        #curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_GREEN)

        if self.file.exists:
            self.start_editor()
        else:
            curses.endwin()
            gc.error('An error occurred while editing this file.')
项目:HTP    作者:nklose    | 项目源码 | 文件源码
def __init__(self, username):
        os.environ.setdefault('ESCDELAY', '25') # shorten esc delay
        self.username = username

        # set up IRC
        self.channel = "##HTP"

        # set up curses
        self.scr = curses.initscr()
        self.disconnect = False
        curses.start_color()
        self.scr_height, self.scr_width = self.scr.getmaxyx()
        self.chatbar = curses.newwin(5, self.scr_height - 1, 5, 10)
        self.msg_text = ''
        self.logfile = '../data/irc.txt'
        self.log_text = []

        # curses color config
        curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_GREEN)

        # start the client
        try:
            curses.wrapper(self.start_loop())
        except Exception as e:
            self.scr.addstr(2, 0, str(e), curses.A_REVERSE)

    # client game loop
项目:captiv8    作者:wraith-wireless    | 项目源码 | 文件源码
def setup():
    """
     sets environment up and creates main window
     :returns: the main window object
    """
    # setup the console
    mmask = curses.ALL_MOUSE_EVENTS # for now accept all mouse events
    main = curses.initscr()         # get a window object
    y,x = main.getmaxyx()           # get size
    if y < 24 or x < 80:            # verify minimum size rqmts
        raise RuntimeError("Terminal must be at least 80 x 24")
    curses.noecho()                 # turn off key echoing
    curses.cbreak()                 # turn off key buffering
    curses.mousemask(mmask)         # accept mouse events
    initcolors()                    # turn on and set color pallet
    main.keypad(1)                  # let curses handle multibyte special keys
    main.clear()                    # erase everything
    banner(main)                    # write the banner
    mainmenu(main)                  # then the min and menu
    main.attron(CPS[RED])           # make the border red
    main.border(0)                  # place the border
    main.attroff(CPS[RED])          # turn off the red
    curses.curs_set(0)              # hide the cursor
    main.refresh()                  # and show everything
    return main
项目:Round1    作者:general-ai-challenge    | 项目源码 | 文件源码
def initialize(self):
        # initialize curses
        self._stdscr = curses.initscr()

        # TODO generalize this:
        begin_x = 0
        begin_y = 0
        # self._info_win_width = 20
        self._info_win_height = 4
        self.height, self.width = self._stdscr.getmaxyx()
        self._win = self._stdscr.subwin(self.height, self.width, begin_y,
                                        begin_x)
        # create info box with reward and time
        self._info_win = self._win.subwin(self._info_win_height,
                                          self.width,
                                          0,
                                          0)

        curses.noecho()
        curses.cbreak()
项目:hostapd-mana    作者:adde88    | 项目源码 | 文件源码
def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.
项目:pyfeld    作者:scjurgen    | 项目源码 | 文件源码
def __init__(self):
        self.selected_index_stack = [0]
        self.returnString = ""
        self.play_in_room = None
        self.dir = DirBrowse()
        self.selected_index = 0
        self.selected_column = 0
        self.window = curses.initscr()
        curses.start_color()
        curses.noecho()
        curses.cbreak()
        curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE)
        curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_WHITE)
        curses.init_pair(3, curses.COLOR_WHITE, curses.COLOR_BLACK)
        curses.init_pair(4, curses.COLOR_BLUE, curses.COLOR_RED)
        curses.init_pair(5, curses.COLOR_YELLOW, curses.COLOR_BLUE)

        self.window.keypad(1)
        self.draw_ui()
项目:mitogen    作者:dw    | 项目源码 | 文件源码
def __init__(self, hosts):
        self.stdscr = curses.initscr()
        curses.start_color()
        self.height, self.width = self.stdscr.getmaxyx()
        curses.cbreak()
        curses.noecho()
        self.stdscr.keypad(1)
        self.hosts = hosts
        self.format = (
            '%(hostname)10.10s '
            '%(pid)7.7s '
            '%(ppid)7.7s '
            '%(pcpu)6.6s '
            '%(rss)5.5s '
            '%(command)20s'
        )
项目:hakkuframework    作者:4shadoww    | 项目源码 | 文件源码
def main():
    try:
        screen = curses.initscr()
        size = screen.getmaxyx()
        sky = generateSky(size[0]-1, size[1]-1, 0.025)

        while True:
            if size[0] != screen.getmaxyx()[0] and size[1] != screen.getmaxyx()[1]:
                size = screen.getmaxyx()
                sky = generateSky(size[0]-1, size[1]-1, 0.05)

            animateSky(sky)
            renderSky(screen, sky)
            time.sleep(1)

        curses.endwin()

    except KeyboardInterrupt:
        curses.endwin()

    except:
        curses.endwin()
        traceback.print_exc()
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_main_menu_config_global_module_removal(self, write_config_mock):
        """Test removal of a module named Global."""
        original_length = len(self.ec2rl._modules)
        global_mod = ec2rlcore.module.get_module("test/modules/bad_mod.d/global.yaml")
        self.ec2rl._modules.append(global_mod)
        self.assertNotEqual(len(self.ec2rl._modules), original_length)
        curses.initscr()
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        with contextlib.redirect_stdout(self.output):
            self.assertTrue(self.ec2rl.menu_config())
        self.assertEqual(len(self.output.getvalue()), 129)
        self.assertTrue(re.match(r"^\n----------\[Configuration File\]----------\n\nConfiguration file saved:\n"
                                 r"/var/tmp/ec2rl/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}_[0-9]{2}_[0-9]{2}.[0-9]{6}"
                                 r"/configuration.cfg\n$",
                                 self.output.getvalue()))
        self.assertEqual(len(self.ec2rl._modules), original_length)
        self.assertTrue("Global" not in self.ec2rl._modules)
        self.assertTrue(write_config_mock.called)
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_global_arg_selection(self):
        """Test setting the Global arg 'only-domains' to 'performance'"""
        curses.initscr()
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(" ")
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(" ")
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(" ")
        # This key sequence may need to change if the Global args in the menu are modified.
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch("\n")
        self.menu()
        self.assertFalse(self.menu["Configure global module arguments"]["only-domains"]["application"].toggled)
        self.assertFalse(self.menu["Configure global module arguments"]["only-domains"]["net"].toggled)
        self.assertFalse(self.menu["Configure global module arguments"]["only-domains"]["os"].toggled)
        self.assertTrue(self.menu["Configure global module arguments"]["only-domains"]["performance"].toggled)
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_global_arg_clear_int_index(self):
        """
        Test setting that the "Clear" footer option sets the Concurrency value to an empty string.
        Verify using an integer index (e.g. list access).
        """
        curses.initscr()
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_LEFT)
        curses.ungetch(curses.KEY_LEFT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch(curses.KEY_RIGHT)
        # This key sequence may need to change if the Global args in the menu are modified.
        curses.ungetch("\n")
        curses.ungetch("1")
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch("\n")
        self.menu()
        self.assertEqual(self.menu["Configure global module arguments"][3].get_value(), "")
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_menu_scrolling_up(self):
        """Test paging down to the bottom of the Modules sub-menu thens scrolling up to the top."""
        curses.initscr()
        # Exit the menu
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)

        # Test scrolling up to the top
        for i in range(len(self.modules)):
            curses.ungetch(curses.KEY_UP)

        # Go to the bottom of the Modules sub-menu
        for iteration in range(15):
            curses.ungetch(curses.KEY_NPAGE)

        # Get into the Modules submenu
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_DOWN)
        self.assertTrue(self.menu())
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_menu_scrolling_down(self):
        """Test scrolling down through the Modules sub-menu."""
        curses.initscr()
        # Exit the menu
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)

        # Test scrolling down, line by line
        for i in range(len(self.modules)):
            curses.ungetch(curses.KEY_DOWN)

        # Get into the Modules submenu
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_DOWN)
        self.assertTrue(self.menu())
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_menu_scrolling_down_single_page(self):
        """Test scrolling down through the Global sub-menu."""
        curses.initscr()
        # Exit the menu
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)

        # Test scrolling down, line by line, and one past the bottom
        for i in range(len(self.menu["Configure global module arguments"])):
            curses.ungetch(curses.KEY_DOWN)

        # Get into the Global submenu
        curses.ungetch("\n")
        self.assertTrue(self.menu())
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_toggle_all_off(self):
        """Test that "N" deselects all items in the only-classes menu."""
        curses.initscr()
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        # Deselect all items
        curses.ungetch("N")
        curses.ungetch("\n")
        curses.ungetch("\n")
        self.assertTrue(self.menu())
        for item in self.menu["Configure global module arguments"]["only-classes"]:
            self.assertFalse(item.toggled)
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_toggle_all_on_mixed_items(self):
        """Test that "N" deselects then selects "perfimpact" in the Global args menu."""
        curses.initscr()
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        # Select all items (turns perfimpact on)
        curses.ungetch("N")
        # Deselect all items (perfimpact is already off)
        curses.ungetch("N")
        # Toggle perfimpact off
        curses.ungetch(" ")
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch("\n")
        self.assertTrue(self.menu())
        self.assertTrue(self.menu["Configure global module arguments"]["perfimpact"].toggled)
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_view_module_help(self):
        """
        Test drawing the menu, selecting the modules menu, a module, and the module help, and then exiting the menu.
        """
        curses.initscr()
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        # _draw_notifications only reacts to ord("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_DOWN)
        self.assertTrue(self.menu())
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_view_long_module_help(self):
        """
        Test drawing the menu, selecting the modules menu, a module, and the module help, and then exiting the menu.
        In this test the help string is more (separated) lines than the window and should be truncated by the
        _draw_notification method.
        """
        # TODO working here
        num_messages = 0
        while num_messages < 100:
            self.menu["View all modules"]["aptlog"].helptext += "a\n"
            num_messages += 1
        curses.initscr()
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_DOWN)
        self.assertTrue(self.menu())
项目:aws-ec2rescue-linux    作者:awslabs    | 项目源码 | 文件源码
def test_menu_config_set_module_value(self):
        """Test drawing module option menu, configuring the period module option, and then exiting the menu."""
        curses.initscr()
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_RIGHT)
        curses.ungetch("\n")
        curses.ungetch("1")
        curses.ungetch("\n")
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch(curses.KEY_DOWN)
        curses.ungetch("\n")
        curses.ungetch(curses.KEY_DOWN)
        self.assertTrue(self.menu())
        self.assertEqual(self.menu["View all modules"]["atop"]["period"].get_value(),
                         "1")
项目:oil    作者:oilshell    | 项目源码 | 文件源码
def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.
项目:python2-tracer    作者:extremecoders-re    | 项目源码 | 文件源码
def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.
项目:cursebox    作者:Tenchi2xh    | 项目源码 | 文件源码
def __enter__(self):
        # Default delay when pressing ESC is too long, at 1000ms
        os.environ["ESCDELAY"] = "25"
        self.pairs = Pairs()
        # Make curses use unicode
        locale.setlocale(locale.LC_ALL, "")

        self.screen = curses.initscr()

        curses.noecho()
        # Using raw instead of cbreak() gives us access to CTRL+C and others
        curses.raw()
        self.screen.keypad(True)
        if not self.blocking_events:
            self.screen.timeout(33)
        curses.start_color()
        curses.use_default_colors()
        self.hide_cursor()

        return self
项目:gdax-trader    作者:mcardillo55    | 项目源码 | 文件源码
def __init__(self, enable=True):
        self.enable = enable
        if not self.enable:
            return
        self.logger = logging.getLogger('trader-logger')
        self.stdscr = curses.initscr()
        self.pad = curses.newpad(23, 120)
        self.order_pad = curses.newpad(10, 120)
        self.timestamp = ""
        self.last_order_update = 0
        curses.start_color()
        curses.noecho()
        curses.cbreak()
        curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_GREEN)
        curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_RED)
        self.stdscr.keypad(1)
        self.pad.addstr(1, 0, "Waiting for a trade...")
项目:sslstrip-hsts-openwrt    作者:adde88    | 项目源码 | 文件源码
def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.
项目:ouroboros    作者:pybee    | 项目源码 | 文件源码
def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.
项目:ndk-python    作者:gittor    | 项目源码 | 文件源码
def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.
项目:py_wsjtx    作者:teabreakninja    | 项目源码 | 文件源码
def __init__(self):
        self.stdscr = curses.initscr()
        # don't display keys
        curses.noecho()
        # don't need key + enter
        curses.cbreak()
        # remove cursor
        curses.curs_set(0)
        self.stdscr.keypad(1)

        #stdscr.border(0)
        self.height, self.width = self.stdscr.getmaxyx()

        self.header = self.stdscr.subwin(3, self.width, 0, 0)
        self.header.box()

        self.main_win = self.stdscr.subwin(20, self.width-2, 3, 1)
        self.main_win.scrollok(True)

        self.setup_colours()

        # self.main()
项目:webnuke    作者:bugbound    | 项目源码 | 文件源码
def get_screen(self):
        self.screen = curses.initscr()

        curses.start_color()
        curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK)
        curses.init_pair(2, curses.COLOR_GREEN, curses.COLOR_BLACK)

        if self.x == 0:
            starty, startx = self.screen.getmaxyx()
            self.x = startx
            self.y = starty

        resize = curses.is_term_resized(self.y, self.x)

        # Action in loop if resize is True:
        if resize is True:
            y, x = self.screen.getmaxyx()
            self.screen.clear()
            curses.resizeterm(self.y, self.x)
            self.screen.refresh()


        self.show_header()

        return self.screen
项目:connect4    作者:guglielmilo    | 项目源码 | 文件源码
def init():
    height_term, width_term = get_terminal_size()
    height_min = COL_HEIGHT * HEIGHT + 2 + 9
    width_min = COL_WIDTH * WIDTH + 2 + 5
    if height_term < height_min or width_term < width_min:
        # resize the terminal to fit the minimum size to display the connect4 before exit
        stdout.write("\x1b[8;{h};{w}t".format(h=max(height_min, height_term), w=max(width_min, width_term)))
        exit('\033[91m' + 'The terminal was too small, you can now restart ' + '\033[1m' + 'Connect4' + '\033[0m')
    stdscr = curses.initscr()
    height,width = stdscr.getmaxyx()
    if height < height_min or width < width_min:
        # abort the program if the terminal can't be resized
        curses.endwin()
        exit('Please resize your terminal [%d%s%d] (minimum required %d%s%d)' %(width, 'x', height, width_min, 'x', height_min))
    curses.noecho()
    curses.cbreak()
    curses.curs_set(0)
    stdscr.keypad(1)
    #define the different colors
    if curses.can_change_color():
        defineColors()
    #return stdscr, width
    stdscr.clear()
    stdscr.border(0)
    return stdscr, width, height
项目:transmission_scripts    作者:leighmacdonald    | 项目源码 | 文件源码
def top(args):
    scr = curses.initscr()
    #scr.start_color()
    curses.noecho()
    curses.cbreak()
    hx, wm = scr.getmaxyx()
    scr.keypad(True)
    try:
        header = curses.newwin(HEADER_SIZE, wm, 0, 0)
        body = curses.newwin(BODY_SIZE, wm, HEADER_SIZE, 0)
        while True:
            draw_header(header)
            draw_body(body)
            draw_footer(scr)
            sleep(0.2)
    except KeyboardInterrupt:
        curses.nocbreak()
        scr.keypad(False)
        curses.echo()
        curses.endwin()
项目:kbe_server    作者:xiaohaoppy    | 项目源码 | 文件源码
def initscr():
    import _curses, curses
    # we call setupterm() here because it raises an error
    # instead of calling exit() in error cases.
    setupterm(term=_os.environ.get("TERM", "unknown"),
              fd=_sys.__stdout__.fileno())
    stdscr = _curses.initscr()
    for key, value in _curses.__dict__.items():
        if key[0:4] == 'ACS_' or key in ('LINES', 'COLS'):
            setattr(curses, key, value)

    return stdscr

# This is a similar wrapper for start_color(), which adds the COLORS and
# COLOR_PAIRS variables which are only available after start_color() is
# called.
项目:CommAI-env    作者:facebookresearch    | 项目源码 | 文件源码
def initialize(self):
        # initialize curses
        self._stdscr = curses.initscr()

        # TODO generalize this:
        begin_x = 0
        begin_y = 0
        # self._info_win_width = 20
        self._info_win_height = 4
        self.height, self.width = self._stdscr.getmaxyx()
        self._win = self._stdscr.subwin(self.height, self.width, begin_y,
                                        begin_x)
        # create info box with reward and time
        self._info_win = self._win.subwin(self._info_win_height,
                                          self.width,
                                          0,
                                          0)

        curses.noecho()
        curses.cbreak()
项目:s2e-env    作者:S2E    | 项目源码 | 文件源码
def _create_desktop(self):
        global _s_screen
        _s_screen = curses.initscr()
        curses.noecho()
        curses.curs_set(0)
        curses.start_color()
        self._desktop = Form(None, 0, 0)

        self._stats = Form(self._desktop, 0, 0, 70, 20)
        self._stats.set_centering(True, True)

        self._title = Label(self._stats, 0, 0, 'S2E')
        self._title.set_centering(True, False)

        self._exitmsg = Label(self._stats, 0, 17, 'Press q to exit')
        self._exitmsg.set_centering(True, False)

        self._table = Table(self._stats, 2, 2, self._data, self._legend,
                            self._layout)
        self._table.set_centering(True, True)
项目:commai-env    作者:axbaretto    | 项目源码 | 文件源码
def initialize(self):
        # initialize curses
        self._stdscr = curses.initscr()

        # TODO generalize this:
        begin_x = 0
        begin_y = 0
        # self._info_win_width = 20
        self._info_win_height = 4
        self.height, self.width = self._stdscr.getmaxyx()
        self._win = self._stdscr.subwin(self.height, self.width, begin_y,
                                        begin_x)
        # create info box with reward and time
        self._info_win = self._win.subwin(self._info_win_height,
                                          self.width,
                                          0,
                                          0)

        curses.noecho()
        curses.cbreak()
项目:AutoCode    作者:HashCode55    | 项目源码 | 文件源码
def __init__(self, file, n, godmode):
        """
        main is the wrapper window
        There are two nested windows, namely header and stdscr.        
        """
        self.main = curses.initscr()
        self.ROWS, self.COLS = self.main.getmaxyx()  

        self.header = self.main.subwin(2, self.COLS, 0, 0)
        # center the text 
        # cast it to int for python3 support
        center = int((self.COLS / 2) - (len(HEADER) / 2))
        self.header.addstr(center * ' ' + HEADER)        
        self.header.refresh()

        self.stdscr = self.main.subwin(self.ROWS-1, self.COLS, 1, 0)        
        self.stdscr.idlok(True) 
        self.stdscr.scrollok(True)  

        curses.cbreak()        
        curses.noecho()         

        self.stdscr.keypad(1)
        self.stdscr.refresh()

        self.file = file           
        # this is for handling the backspaces 
        self.virtualfile = file.split('\n') 

        self.godmode = godmode
        self.n = n   

        # handle terminal size
        if self.COLS < 100:
            curses.endwin()            
            print ('Error: Increase the width of your terminal')
            sys.exit(1)
项目:supremm    作者:ubccr    | 项目源码 | 文件源码
def __enter__(self):
        """ init curses library """
        self.stdscr = curses.initscr()
        curses.noecho()
        curses.cbreak()
        self.stdscr.keypad(1)

        return self
项目:Round1    作者:general-ai-challenge    | 项目源码 | 文件源码
def initialize(self):
        # initialize curses
        self._stdscr = curses.initscr()
        begin_x = 0
        begin_y = 0
        self._teacher_seq_y = 0
        self._learner_seq_y = 1
        self._reward_seq_y = 2
        self._world_win_y = 4
        self._world_win_x = 0
        self._info_win_width = 20
        self._info_win_height = 4
        self._user_input_win_y = 4
        self._user_input_win_x = 10
        self.height, self.width = self._stdscr.getmaxyx()
        self._scroll_msg_length = self.width - self._info_win_width - 1
        self._win = self._stdscr.subwin(self.height, self.width, begin_y,
                                        begin_x)
        self._worldwin = self._win.subwin(self.height - self._world_win_y,
                                          self.width - self._world_win_x,
                                          self._world_win_y,
                                          self._world_win_x)
        # create info box with reward and time
        self._info_win = self._win.subwin(self._info_win_height,
                                          self._info_win_width,
                                          0,
                                          self.width - self._info_win_width)
        self._user_input_win = \
            self._win.subwin(1,
                             self.width - self._user_input_win_x,
                             self._user_input_win_y,
                             self._user_input_win_x)
        self._user_input_label_win = \
            self._win.subwin(1,
                             self._user_input_win_x - 1,
                             self._user_input_win_y,
                             0)
        curses.noecho()
        curses.cbreak()
项目:botany    作者:jifunks    | 项目源码 | 文件源码
def __init__(self, this_plant, this_data):
        '''Initialization'''
        self.initialized = False
        self.screen = curses.initscr()
        curses.noecho()
        curses.raw()
        curses.start_color()
        try:
            curses.curs_set(0)
        except curses.error:
            # Not all terminals support this functionality.
            # When the error is ignored the screen will look a little uglier, but that's not terrible
            # So in order to keep botany as accesible as possible to everyone, it should be safe to ignore the error.
            pass
        self.screen.keypad(1)
        self.plant = this_plant
        self.user_data = this_data
        self.plant_string = self.plant.parse_plant()
        self.plant_ticks = str(self.plant.ticks)
        self.exit = False
        self.infotoggle = 0
        self.maxy, self.maxx = self.screen.getmaxyx()
        # Highlighted and Normal line definitions
        self.define_colors()
        self.highlighted = curses.color_pair(1)
        self.normal = curses.A_NORMAL
        # Threaded screen update for live changes
        screen_thread = threading.Thread(target=self.update_plant_live, args=())
        screen_thread.daemon = True
        screen_thread.start()
        self.screen.clear()
        self.show(["water","look","garden","instructions"], title=' botany ', subtitle='options')
项目:hostapd-mana    作者:adde88    | 项目源码 | 文件源码
def wrapper(func, *args, **kwds):
    """Wrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    """

    try:
        # Initialize curses
        stdscr = curses.initscr()

        # Turn off echoing of keys, and enter cbreak mode,
        # where no buffering is performed on keyboard input
        curses.noecho()
        curses.cbreak()

        # In keypad mode, escape sequences for special keys
        # (like the cursor keys) will be interpreted and
        # a special value like curses.KEY_LEFT will be returned
        stdscr.keypad(1)

        # Start color, too.  Harmless if the terminal doesn't have
        # color; user can test with has_color() later on.  The try/catch
        # works around a minor bit of over-conscientiousness in the curses
        # module -- the error return from C start_color() is ignorable.
        try:
            curses.start_color()
        except:
            pass

        return func(stdscr, *args, **kwds)
    finally:
        # Set everything back to normal
        if 'stdscr' in locals():
            stdscr.keypad(0)
            curses.echo()
            curses.nocbreak()
            curses.endwin()
项目:awesome-finder    作者:mingrammer    | 项目源码 | 文件源码
def init_curses(self):
        """Setup the curses"""
        self.window = curses.initscr()
        self.window.keypad(True)

        curses.noecho()
        curses.cbreak()

        curses.start_color()
        curses.init_pair(1, curses.COLOR_CYAN, curses.COLOR_BLACK)
        curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_CYAN)

        self.current = curses.color_pair(2)
项目:getTimer    作者:maxwellgerber    | 项目源码 | 文件源码
def _startWindow():
    stdscr = curses.initscr()
    curses.noecho()
    curses.cbreak()
    stdscr.keypad(1)
    curses.curs_set(0)
    return stdscr
项目:paint-it    作者:plainspooky    | 项目源码 | 文件源码
def __init__(self, arena_size):
        self.arena_size = arena_size
        self.max_moves = int(25*(2*arena_size*COLORS)/(28*6))
        self.screen = curses.initscr()
        curses.noecho()
        curses.cbreak()
        curses.start_color()
        try:
            curses.curs_set(False)
        except curses.error:
            pass
        self.screen.nodelay(True)
        self.window_size = self.screen.getmaxyx()

        if self.window_size[0] < self.arena_size+4 or self.window_size[1] < self.arena_size*2:
            print('Your screen is too short!')
            exit()

        curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE)
        curses.init_pair(2, curses.COLOR_WHITE, curses.COLOR_GREEN)
        curses.init_pair(3, curses.COLOR_WHITE, curses.COLOR_CYAN)
        curses.init_pair(4, curses.COLOR_WHITE, curses.COLOR_RED)
        curses.init_pair(5, curses.COLOR_WHITE, curses.COLOR_MAGENTA)
        curses.init_pair(6, curses.COLOR_WHITE, curses.COLOR_YELLOW)
        curses.init_pair(7, curses.COLOR_WHITE, curses.COLOR_WHITE)

        self.offset_x = int((self.window_size[1]-2*self.arena_size)/2)
        self.offset_y = int((self.window_size[0]-self.arena_size)/2)
        self.moves_position=[ self.offset_y+self.arena_size+1, self.offset_x+self.arena_size-5 ]

        self.arena_initialize()

        self.screen.addstr( self.offset_y-2, self.offset_x, self.title, curses.color_pair(0))
        self.screen.addstr( self.offset_y-2, self.offset_x+2*self.arena_size-17, "Press '?' to help", curses.color_pair(0))
项目:pyfeld    作者:scjurgen    | 项目源码 | 文件源码
def __init__(self):
        self.notification_count = 0
        self.window = curses.initscr()
        curses.start_color()
        curses.noecho()
        curses.cbreak()
        curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE)
        curses.init_pair(2, curses.COLOR_BLACK, curses.COLOR_WHITE)
        curses.init_pair(3, curses.COLOR_WHITE, curses.COLOR_BLACK)
        curses.init_pair(4, curses.COLOR_WHITE, curses.COLOR_RED)
        curses.init_pair(5, curses.COLOR_YELLOW, curses.COLOR_BLUE)

        self.window.keypad(1)
        self.draw_ui()
项目:sandsifter    作者:xoreaxeaxeax    | 项目源码 | 文件源码
def __init__(self, ts, injector, tests, do_tick, disassembler=disas_capstone):
        self.ts = ts;
        self.injector = injector
        self.T = tests
        self.gui_thread = None
        self.do_tick = do_tick
        self.ticks = 0

        self.last_ins_count = 0
        self.delta_log = deque(maxlen=self.RATE_Q)
        self.time_log = deque(maxlen=self.RATE_Q)

        self.disas = disassembler

        self.stdscr = curses.initscr()
        curses.start_color()

        # doesn't work
        # self.orig_colors = [curses.color_content(x) for x in xrange(256)]

        curses.use_default_colors()
        curses.noecho()
        curses.cbreak()
        curses.curs_set(0)
        self.stdscr.nodelay(1)

        self.sx = 0
        self.sy = 0

        self.init_colors()

        self.stdscr.bkgd(curses.color_pair(self.WHITE))

        self.last_time = time.time()
项目:sandsifter    作者:xoreaxeaxeax    | 项目源码 | 文件源码
def start(self, no_delay):
        self.window = curses.initscr()
        curses.start_color()
        curses.use_default_colors()
        curses.noecho()
        curses.cbreak()
        curses.curs_set(0)
        self.window.nodelay(no_delay)
        self.init_colors()
        self.window.bkgd(curses.color_pair(self.WHITE))
        locale.setlocale(locale.LC_ALL, '')    # set your locale
        self.code = locale.getpreferredencoding()
项目:cyberbot    作者:RickGray    | 项目源码 | 文件源码
def init_scr(self):
        self.stdscr = curses.initscr()
        curses.noecho()
        curses.curs_set(0)

        self.stdscr_size = self.stdscr.getmaxyx()
        self.task_total = count_file_linenum(self.config.seedfile)

        self.pgsscr_size = (self.config.proc_num + 2, 40)
        self.pgsscr = curses.newpad(*self.pgsscr_size)
        self.cntscr_size = (4, 40)
        self.cntscr = curses.newpad(*self.cntscr_size)
        self.optscr_size = (18, 80)
        self.optscr = curses.newpad(*self.optscr_size)
项目:huhamhire-hosts    作者:jiangsile    | 项目源码 | 文件源码
def __init__(self):
        """
        Initialize a new TUI window in terminal.
        """
        locale.setlocale(locale.LC_ALL, '')
        self._stdscr = curses.initscr()
        curses.start_color()
        curses.noecho()
        curses.cbreak()
        curses.curs_set(0)
        # Set colors
        curses.use_default_colors()
        for i, color in enumerate(self.colorpairs):
            curses.init_pair(i + 1, *color)
项目:cursed    作者:johannestaas    | 项目源码 | 文件源码
def run(self):
        '''
        Runs all the windows added to the application, and returns a `Result`
        object.

        '''
        result = Result()
        try:
            self.scr = curses.initscr()
            self.MAX_HEIGHT, self.MAX_WIDTH = self.scr.getmaxyx()
            curses.noecho()
            curses.cbreak()
            curses.start_color()
            curses.use_default_colors()
            self.window = self.scr.subwin(0, 0)
            self.window.keypad(1)
            self.window.nodelay(1)
            self._run_windows()
            self.threads += [gevent.spawn(self._input_loop)]
            gevent.joinall(self.threads)
            for thread in self.threads:
                if thread.exception:
                    result._extract_thread_exception(thread)
        except KeyboardInterrupt:
            result._extract_exception()
        except Exception:
            result._extract_exception()
        finally:
            if self.scr is not None:
                self.scr.keypad(0)
                curses.echo()
                curses.nocbreak()
                curses.endwin()
        return result
项目:zippy    作者:securesystemslab    | 项目源码 | 文件源码
def wrapper(func, *args, **kwds):
    """Wrapper function that initializes curses and calls another function,
    restoring normal keyboard/screen behavior on error.
    The callable object 'func' is then passed the main window 'stdscr'
    as its first argument, followed by any other arguments passed to
    wrapper().
    """

    try:
        # Initialize curses
        stdscr = curses.initscr()

        # Turn off echoing of keys, and enter cbreak mode,
        # where no buffering is performed on keyboard input
        curses.noecho()
        curses.cbreak()

        # In keypad mode, escape sequences for special keys
        # (like the cursor keys) will be interpreted and
        # a special value like curses.KEY_LEFT will be returned
        stdscr.keypad(1)

        # Start color, too.  Harmless if the terminal doesn't have
        # color; user can test with has_color() later on.  The try/catch
        # works around a minor bit of over-conscientiousness in the curses
        # module -- the error return from C start_color() is ignorable.
        try:
            curses.start_color()
        except:
            pass

        return func(stdscr, *args, **kwds)
    finally:
        # Set everything back to normal
        if 'stdscr' in locals():
            stdscr.keypad(0)
            curses.echo()
            curses.nocbreak()
            curses.endwin()
项目:pycreate2    作者:MomsFriendlyRobotCompany    | 项目源码 | 文件源码
def __init__(self):
        # print('start')
        locale.setlocale(locale.LC_ALL, '')
        self.screen = curses.initscr()  # Initialize curses.
        curses.noecho()
        curses.cbreak()  # don't need to hit enter
        curses.curs_set(0)  # disable mouse cursor
        self.screen.nodelay(True)  # non-blocking on getch - not sure this works
        # pass

        self.windows = {}
        self.windows['commands'] = CommandWindow(4, 1)
        self.windows['light'] = LightBumperWindow(11, 1)

        self.dummy = -100.0