2012-01-18 3 views
4

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

Результат:

screenshot

Кстати, я не буду использовать Python и библиотеки по умолчанию в Лионе, не MacPorts. Я хотел бы использовать родные библиотеки, , если возможно.

+0

Ваша программа выходит из-за того, что после публикации «Это строка» вы ничего не сказали. Что вы ожидаете здесь? – duskwuff

+0

Прежде чем выйти из сценария, вы должны помнить 'curses.endwin', поскольку он восстанавливает настройки терминала. –

ответ

5

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

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

screen.refresh() 

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

curses.endwin() 

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

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

screen.getch() 

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

+0

Это было прекрасно. Спасибо. Я не понимал, что должен обновлять * и * ждать ввода, чтобы он не затухал. Огромное спасибо. – John

Смежные вопросы