Почему мое окно проклятий Perl не работает?

StackOverflow https://stackoverflow.com/questions/394873

  •  23-08-2019
  •  | 
  •  

Вопрос

Это может быть проблемой с моим пониманием 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; 
Это было полезно?

Решение

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

А newwin функция, описанная в curs_window man-страница, занимает:

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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top