Ncurses, Python и OSX Lion - PullRequest
       17

Ncurses, Python и OSX Lion

4 голосов
/ 18 января 2012

Я новичок в медсестрах и пробую это на моем OSX Lion с некоторым кодом на python. Я наткнулся на странную ошибку, и я не знаю, что я делаю неправильно. Я много гуглил и не могу найти подобную проблему, даже в Linux. Я выборочно удалил строки, чтобы посмотреть, является ли одна из них проблемой. Когда я запускаю код ниже, я ничего не получаю. Нет меню, и мой терминал не работает, если я нажму Enter, вы увидите, что я получаю на картинке ниже. Я должен набрать 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")

Результат:

screenshot

Кстати, я использую Python по умолчанию и libs в Lion, но не в macports. Я хотел бы использовать нативные библиотеки, , если возможно .

1 Ответ

5 голосов
/ 19 января 2012

У вас 2 проблемы.

После добавления строки на экран с помощью addstr вы не говорите ей обновить экран. Добавьте это после вызова addstr:

screen.refresh()

Вам необходимо вызвать endwin () в конце вашей программы для сброса терминала. Добавьте это в конец вашей программы:

curses.endwin()

Тем не менее, после внесения этих двух изменений при запуске вашей программы, похоже, ничего не происходит, потому что после отображения строки на экране проклятия выходят и возвращают экран в состояние до запуска программы.

Добавьте это перед вызовом endwin ():

screen.getch()

Тогда он будет ждать, пока вы нажмете клавишу, прежде чем выйти.

...