Python Curses виджет текстового поля

#! /usr/bin/python

import curses
import curses.textpad as textpad

try:
    mainwindow = curses.initscr()
    textpad.Textbox(mainwindow).edit()
finally:
    curses.endwin()

проблема в том, что я набираю один символ, но на экране отображаются два символа.

2 ответа

Решение

Эхо включено по умолчанию. Вам нужно позвонить noecho для деактивации.

#!/usr/bin/env python

import curses
import curses.textpad as textpad

try:
    mainwindow = curses.initscr()
    # Some curses-friendly terminal settings
    curses.cbreak(); mainwindow.keypad(1); curses.noecho()
    textpad.Textbox(mainwindow).edit()
finally:
    # Reverse curses-friendly terminal settings
    curses.nocbreak(); mainwindow.keypad(0); curses.echo()
    curses.endwin()

(скрипт был протестирован на Python 2.7). Я предлагаю вам взглянуть на страницу программирования curses.

Использование curses.noecho():

import curses
import curses.textpad as textpad

try:
    mainwindow = curses.initscr()
    curses.noecho()
    textpad.Textbox(mainwindow).edit()
finally:
    curses.endwin()
Другие вопросы по тегам