Ncurses、Python和OSX Lion

6 投票
1 回答
2751 浏览
提问于 2025-04-17 10:30

我刚接触护士这个东西,正在我的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()

这样程序就会在退出之前等待你按一个键。

撰写回答