Реализация backspace в Python 3.3.2 Shell с использованием Idle

Здесь есть несколько человек, которые ищут ответы на backspace в Python. Ни один из вопросов, которые я искал, не ответил на это для меня, поэтому здесь идет:

Простая цель: иметь возможность распечатывать строку состояния в одной строке, где следующий статус перезаписывает первый. Подобно статусу% complete, где вместо прокрутки длинной строки 1%\n, 2%,... и т.д. Мы просто перезаписываем первую строку с самым новым значением.

Теперь вопрос. Когда я набираю это в режиме ожидания: print("a\bc") Я получаю это как вывод: ac с тем, что выглядит как нечетное поле с кружком между 'a' и ' с". То же самое происходит при использовании sys.stdout.write().

Является ли это настройкой/выпуском редактора Idle? Кто-нибудь даже знает, возможно ли, что я пытаюсь в среде ожидания?

Спасибо за понимание.

PS: Запуск Python 3.3.2 Простой в Windows 7, 64-разрядная система.

EDIT: Копирование вывода в Notepad ++ показывает, что Python печатает символ "backspace" и фактически не возвращает пробел. Возможно, то, чего я пытаюсь сделать, невозможно?

Ответ 1

Edit:

По-видимому, возврат каретки \r и backspace \b фактически не будет работать в Idle, потому что он использует текстовый элемент управления, который не возвращает обратное/обратное пространство должным образом.

Возможно, вы можете написать какой-то патч для Idle, но это может быть больше проблем, чем это стоит (если только вам не нравится Idle)

Ответ 2

Это не отвечает на ваш вопрос в буквальном смысле, но я думаю, было бы полезно указать, что в целом такие интерфейсы, как тот, который вы описываете (например, когда одна часть экрана постоянно обновляется, без символов новой строки), он обычно реализуется с использованием библиотеки, такой как ncurses.

Python имеет встроенную библиотеку curses (http://docs.python.org/3.3/library/curses.html), которая может более или менее достигать конечной цели.