Окно Python Curses Handling (Терминал) Изменение размера - PullRequest
20 голосов
/ 02 марта 2011

На самом деле это два вопроса:

  • как изменить размер окна curses и
  • как мне изменить размер терминала в curses?

Можно ли узнать, когда окно изменило размер?

Я действительно не могу найти ни одного хорошего документа, даже не покрытого http://docs.python.org/library/curses.html

Ответы [ 3 ]

22 голосов
/ 04 марта 2011

Событие изменения размера терминала приведет к коду curses.KEY_RESIZE.Поэтому вы можете обрабатывать изменение размера терминала как часть стандартного основного цикла в программе curses, ожидая ввода с помощью getch.

8 голосов
/ 16 февраля 2014

Я получил мою программу на Python, чтобы изменить размер терминала, выполнив несколько действий.

# Initialize the screen
import curses

screen = curses.initscr()

# Check if screen was re-sized (True or False)
resize = curses.is_term_resized(y, x)

# Action in loop if resize is True:
if resize is True:
    y, x = screen.getmaxyx()
    screen.clear()
    curses.resizeterm(y, x)
    screen.refresh()

Когда я пишу свою программу, я вижу полезность помещения своего экрана в свой собственный класс со всеми этими определенными функциями, поэтому все, что мне нужно сделать, это вызвать Screen.resize(), и он позаботится обо всем остальном.

0 голосов
/ 26 января 2014

Это не правильно. Это расширение ncurses-only. Вопрос задан около curses. Чтобы сделать это в соответствии со стандартами, вам нужно поймать SIGWINCH в ловушку и организовать перерисовку экрана.

...