Почему не работает мое окно Perl curses? - PullRequest
4 голосов
/ 27 декабря 2008

Это может быть проблемой с моим пониманием Curses больше, чем с Perl, но, пожалуйста, помогите мне. Я использую Curses.pm, который работает довольно хорошо, за исключением случаев, когда я пытаюсь создать «окно» проклятий. Пример кода:

use Curses;
initscr;
$w=newwin(1,1,40,40);
$w->addstr(20,20,"Hello");
$w->refresh;
refresh;
endwin;

ничего не выводит. Не используя окно работает нормально:

use Curses;
initscr; 
$w=newwin(1,1,40,40); 
addstr(20,20,"Hello"); 
refresh; 
endwin; 

1 Ответ

8 голосов
/ 27 декабря 2008

Вы должны привести свои аргументы в нужное место, и нелегко запомнить, что это за число. Я всегда должен искать это после попытки всех неправильных перестановок сначала. Я просто смотрю справочные страницы для интерфейса C и затем меняю его на синтаксис Perl.

Функция newwin, описанная в справочной странице curs_window , принимает:

newwin( height, width, starty, startx )

Вы устанавливаете окно, которое было высотой в одну строку и шириной в один столбец, начиная со строки 40, столбца 40. Однако затем вы указываете addstr поместить текст в столбец 20 строки 20 в этом окне. Это вне установленного вами кадра 1x1, поэтому вы ничего не видите.

Попробуйте, чтобы увидеть, работает ли он для вас. Если это работает, попробуйте настроить значения окна, чтобы получить нужный кадр.

use Curses;
initscr;

$w = newwin(
    1,       # height (y)
    COLS(),  # width  (x)
    0,       # start y
    1        # start x
    );

$w->addstr( 
    0,       # relative y to window
    0,       # relative x to window
    "Hello" 
    );

$w->refresh();

sleep 10;
endwin;
...