2012-01-18 115 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