2012-01-18 110 views
4

我是新來的護士,並在我的OSX Lion上用一些python代碼試用它。我遇到了一個奇怪的錯誤,我不知道我做錯了什麼。我已經廣泛搜索,並且找不到類似的問題,即使在linux中也是如此。我已選擇性地刪除線條,以查看它們中的一條是否也是問題。當我運行下面的代碼時,我什麼也得不到。沒有菜單,我的終端搞砸了,如果我按下回車鍵,你會看到下面的圖片。我必須輸入reset才能使其再次正常工作。任何人都可以給我建議,或指出我在哪裏看的方向?我真的很感激。謝謝。Ncurses,python和OSX Lion

腳本:

import curses 

screen = curses.initscr() # Init curses 
curses.noecho()    # Suppress key output to screen 
curses.curs_set(0)   # remove cursor from screen 
screen.keypad(1)   # set mode when capturing keypresses 

top_pos = 12 
left_pos = 12 
screen.addstr(top_pos, left_pos, "This is a String") 

結果:

screenshot

順便說一句,我使用的是默認的Python和庫中的獅子,沒有MacPorts的。我想使用本地庫,如果可能的話

+0

您的程序正在退出,因爲在打印「This is a String」後您沒有告訴它任何操作。你期望在這裏發生什麼? – duskwuff 2012-01-18 05:59:57

+0

您必須記得在退出腳本之前調用'curses.endwin',因爲它會恢復終端設置。 – 2012-01-18 07:04:05

回答

5

您有2個問題。

使用addstr將字符串添加到屏幕後,您不會告訴它刷新屏幕。在致addstr之後添加:

screen.refresh() 

您需要在程序結束時調用endwin()來重置終端。添加到您的程序結束:

curses.endwin() 

這就是說,使那些2名更改後,當你運行你的程序就會出現,因爲在屏幕上顯示的字符串後面詛咒退出,屏幕會返回到什麼都不做運行程序之前的狀態。

調用之前添加這endwin():

screen.getch() 

然後,它會等待您在退出前按一個鍵。

+0

這很完美。謝謝。我沒有意識到我必須刷新*和*等待輸入,所以它不會空白。非常感謝。 – John 2012-01-25 00:20:26