Ncurses,python和OSX Lion

Joh*_*ohn 4 python macos ncurses osx-lion

我是护士的新手,并在我的OSX Lion上尝试了一些python代码.我遇到了一个奇怪的错误,我不知道我做错了什么.我已经广泛搜索,即使在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")
Run Code Online (Sandbox Code Playgroud)

结果:

截图

顺便说一句,我在Lion中使用默认的python和libs,没有macports.如果可能的话,我想使用本机库.

Cra*_*aig 6

你有2个问题.

使用addstr将字符串添加到屏幕后,您不要告诉它刷新屏幕.在调用addstr之后添加:

screen.refresh()
Run Code Online (Sandbox Code Playgroud)

您需要在程序结束时调用endwin()来重置终端.将其添加到程序的末尾:

curses.endwin()
Run Code Online (Sandbox Code Playgroud)

也就是说,在运行程序后进行这两项更改之后,它似乎什么都不做,因为在屏幕上显示字符串后会弹出退出并将屏幕返回到运行程序之前的状态.

在调用endwin()之前添加它:

screen.getch()
Run Code Online (Sandbox Code Playgroud)

然后它会在退出前等你按一个键.