5.6 KiB
5.6 KiB
В Curses, существуют объекты, сразными параметрами, для разметки и ореинтации в консоли.
Ранее добавленный объект stdscr, является по сути объектом окна нашей консоли.
Управление выводом текста
addch(y, x, ch[, attr])– вывести символ.addstr(y, x, str[, attr])– вывести строку.insstr([y, x,] str[, attr])– вставить строку.delch([y, x])– удалить символ.
Управление положением курсора
move(y, x)– переместить курсор.getyx()– получить текущие координаты курсора.getbegyx()– координаты верхнего-левого угла окна.getmyx()– размеры окна (строки, колонки).
Чтение ввода
getch([y, x])– получить символ/код клавиши.getkey([y, x])– то же, но как строка (например"KEY_LEFT").getstr([y, x])– считать строку.nodelay(flag)– включить/выключить неблокирующий ввод.timeout(ms)– задать таймаут ожидания ввода.
Работа с экраном/окном
clear()– очистить окно.erase()– стереть содержимое (похоже наclear, но без обновления).refresh()– обновить экран, показать изменения.noutrefresh()– отложенное обновление (дляdoupdate()).redrawwin()– перерисовать окно.
Атрибуты и цвет
attron(attr)– включить атрибут.attroff(attr)– выключить атрибут.attrset(attr)– установить атрибуты.bkgd(ch[, attr])– задать символ/атрибут фона.bkgdset(ch[, attr])– задать "фон по умолчанию".color_pair(n)– использовать цветовую пару.
Управление окнами
subwin(nlines, ncols, begin_y, begin_x)– создать подокно.derwin(nlines, ncols, begin_y, begin_x)– "деривативное" окно.overlay(win)– скопировать содержимое (не заменяя пробелы).overwrite(win)– полностью переписать.box([vertch, horch])– нарисовать рамку вокруг окна.border([...])– нарисовать рамку со своими символами.
Прокрутка
scroll([n])– прокрутить содержимое вверх.scrollok(flag)– разрешить/запретить автопрокрутку.
Дополнительно
keypad(flag)– включить/выключить поддержку функциональных клавиш.idlok(flag)– оптимизировать обновление при вставке/удалении строк.leaveok(flag)– разрешить оставлять курсор "где попало".touchwin()– пометить всё окно для перерисовки.untouchwin()– снять метки.is_wintouched()– проверить, есть ли изменения.
Обьекты окон
В curses так же можно создавать окна отдельно от основного.
Вот несколько обьектов окон для разметки в curses:
newwin - обычное окно
- Создаётся функцией
curses.newwin(nlines, ncols, begin_y, begin_x). - Можно сделать несколько таких окон в пределах
stdscr. - Каждый объект — независимый
_curses.window.
Пример:
win = curses.newwin()
subwin - подокно
- Создаётся как "срез" другого окна.
- Разделяет память с родительским окном: изменения в одном видны в другом.
- Удобно, если хочешь "разбить экран на части".
Пример:
sub = stdscr.subwin(5, 20, 2, 5)
derwin - Дочернее окно
- Похоже на subwin, но привязано к координатам внутри родительского окна, а не всего экрана.
- Тоже разделяет буфер с родителем.
Пример:
der = win.derwin(5, 20, 1, 1)
newpad - Pad
- "Большое окно", которое может быть больше экрана.
- Сам не отображается, нужно явно указывать какую часть показывать через pad.refresh().
- Удобно для скроллинга длинных текстов, логов и т. п.
Пример:
pad = curses.newpad(100, 100)
pad.refresh(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)
где
pminrow, pmincol— координаты внутри pad (откуда брать данные).sminrow, smincol— верхний левый угол области на экране, куда будет выведен кусок pad.smaxrow, smaxcol— нижний правый угол области на экране (включительно).