Ncurses,python和OSX Lion
我是新来的护士,并在我的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")
结果:
顺便说一句,我使用的是默认的Python和库中的狮子,没有MacPorts的。我想使用本地库,如果可能的话。
您有2个问题。
使用addstr将字符串添加到屏幕后,您不会告诉它刷新屏幕。在致addstr之后添加:
screen.refresh()
您需要在程序结束时调用endwin()来重置终端。添加到您的程序结束:
curses.endwin()
这就是说,使那些2名更改后,当你运行你的程序就会出现,因为在屏幕上显示的字符串后面诅咒退出,屏幕会返回到什么都不做运行程序之前的状态。
调用之前添加这endwin():
screen.getch()
然后,它会等待您在退出前按一个键。
这很完美。谢谢。我没有意识到我必须刷新*和*等待输入,所以它不会空白。非常感谢。 – John 2012-01-25 00:20:26
您的程序正在退出,因为在打印“This is a String”后您没有告诉它任何操作。你期望在这里发生什么? – duskwuff 2012-01-18 05:59:57
您必须记得在退出脚本之前调用'curses.endwin',因为它会恢复终端设置。 – 2012-01-18 07:04:05