2013-04-23 190 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 

你選擇寫入(例如),然後打印此前在之前的打印菜單intead:

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

感謝您的幫助。

編輯:我不想完全擦除屏幕(我已經看過其他線程),但如果有一種方法只擦除一些線條,但是anwers告訴我這是不可能的沒有外部庫,所以我只需清理所有屏幕並重新打印一些東西,但是要感謝所有的驅動程序。

+2

什麼平臺? Windows控制檯或POSIX終端或別的什麼? – 2013-04-23 22:59:36

+0

請參閱http://stackoverflow.com/q/3593339/1176601 – Aprillion 2013-04-23 23:00:21

+0

您可能並不是真的想要「在上一個菜單上打印」(因爲那時您會在新行較短的情況下留下剩餘字符老),而是隻是清除屏幕,對吧?如果是這樣,請參閱http://stackoverflow.com/questions/4810537/how-to-clear-the-screen-in-python(這個問題是一個dup,但它有許多其他重複的dups的鏈接,所以按照好的答案的鏈接。) – abarnert 2013-04-23 23:05:13

回答

1

如果你想顯示多行菜單,每個菜單選項後顯示一個完全新的,只有幾個方法可以做到這一點:

  1. 清除打印每個菜單在屏幕前。關於如何做到這一點,關於SO有大約69102個問題; how to clear the screen in python有許多鏈接。

  2. 打印出一個換頁/換頁。這在許多現代終端(Windows或Unix)上不起作用,但它在老派teletypes上搖擺不定。

  3. 使用終端控制序列來移動光標。如果cmd終端支持ANSI(我相信它通常不是默認情況下),並且在其他任何情況下,如果您選擇(或查找)正確的終端來發送控制序列,這將在Windows上工作。您還必須確保覆蓋每個字符,而不僅僅是每個。否則,當你覆蓋第2行時,最終會出現「寫入文件!第11頁,你想要做什麼?」。

  4. 使用curses(以及您最喜歡的第三方Windows curses端口)或其他終端圖形庫,可以在更高級別上執行此操作。 (使用console如果編寫不同的代碼存在,適用於Windows和curses否則,幾乎一切,往往要做到這一點最簡單的方法。)

我建議1或4,但這些都是你的選擇。