Ncurses、Python和OSX Lion
我刚接触护士这个东西,正在我的OSX Lion上试一些Python代码。遇到了一个奇怪的bug,我不知道自己哪里出错了。我在网上查了很多资料,但找不到类似的问题,连Linux上也没有。我还特意删了一些代码行,看看是不是其中某一行出了问题。当我运行下面的代码时,什么都没有显示。没有菜单,而且我的终端也乱了,如果我按回车键,屏幕上会显示我下面图片里的内容。我得输入一个reset
命令才能让它恢复正常。有没有人能给我一些建议,或者告诉我该去哪里找解决办法?我会非常感激的。谢谢。
脚本:
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")
结果:
顺便说一下,我在Lion上使用的是默认的Python和库,没有使用macports。如果可以的话,我想用本地的库。
1 个回答
6
你遇到了两个问题。
在用addstr把字符串显示到屏幕上之后,你没有告诉程序刷新屏幕。你需要在调用addstr之后加上这一行:
screen.refresh()
在你程序的最后,你需要调用endwin()来重置终端。把这一行加到你程序的最后:
curses.endwin()
不过,做了这两处修改后,当你运行程序时,它看起来好像什么都没发生,因为在显示字符串后,curses会退出,并把屏幕恢复到你运行程序之前的状态。
在调用endwin()之前,你需要加上这一行:
screen.getch()
这样程序就会在退出之前等待你按一个键。