2013-04-23 1 views
0

Я делаю сценарий с помощью меню, как вначале, и я хотел бы знать, если я мог бы сделать что-то вроде этого:Печать поверх предыдущих отпечатков в python?

открыть файл и печатает это меню:

LOGO 
Welcome to script 11 , what would you like to do? 
-write a file 
-read a file 
-create a file 
> #input here 

вы выберите запись (например) и выводит этот OVER предыдущего меню Intead печати, если после него:

LOGO 
Writing a file! 
-Select the path: 
> #input here 

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

Редактировать: я не хотел полностью стирать экран (я видел другие темы об этом), но если есть способ стереть только некоторые строки, но анверсы говорят мне, что это невозможно без внешних библиотек, поэтому я просто очищу весь экран и перепечатаю некоторые вещи, но спасибо за всех андерсеров

+2

Какая платформа? Консоль Windows или терминал POSIX или что-то еще? –

+0

см. Http://stackoverflow.com/q/3593339/1176601 – Aprillion

+0

Возможно, вы действительно не хотите «распечатывать предыдущее меню» (потому что тогда вы оставите оставшиеся символы из случаев, когда новые строки были короче, чем старый), но вместо этого просто очистить экран, не так ли? Если это так, см. Http://stackoverflow.com/questions/4810537/how-to-clear-the-screen-in-python (Этот вопрос является дубликатом, но он имеет ссылки на многие другие повторяющиеся дубликаты, поэтому следуйте ссылки для хороших ответов.) – abarnert

ответ

2

Если вы используете Linux (или OSX), вы можете использовать curses module.

Если вы используете окна, используйте console module.

1

Если вы хотите, чтобы отобразить меню из нескольких строк, а также отображать совершенно новый после каждого выбора меню, есть только несколько способов сделать это:

  1. Очистка экрана перед печатью каждого меню , На SO около 69102 вопросов о том, как это сделать; how to clear the screen in python имеет ссылки на многие из них.

  2. Распечатайте форму feed/page feed. Что не будет работать на многих современных терминалах (Windows или Unix), но это сказывается на телетайпах старой школы.

  3. Используйте терминальные управляющие последовательности для перемещения курсора. Это будет работать в Windows, если терминал cmd имеет ANSI-совместимость (я считаю, что это обычно не по умолчанию), и во всем остальном, если вы выбираете (или просматриваете) правый терминал для отправки управляющих последовательностей. Вам также необходимо будет перезаписать каждый персонаж, а не только каждый линия. В противном случае, когда вы перепишете строку 2, вы получите «Написание файла! Pt 11, что бы вы хотели сделать?».

  4. Используйте curses (и ваш любимый сторонний Windows curses порт) или какую-либо другую графическую библиотеку терминала, чтобы сделать это на более высоком уровне. (Запись отдельного кода с помощью console, если он существует, для Windows, и curses иначе, почти все остальное-это часто самый простой способ сделать это.)

Я хотел бы предложить 1 или 4, но те ваши варианты.