Python curses getmaxyx () всегда возвращает одно и то же значение в windows - PullRequest
1 голос
/ 07 апреля 2019

У меня проблемы с использованием модуля python curses для Windows. Я использовал колесо, найденное здесь , чтобы получить скрипт, написанный на моем Mac, для запуска на рабочем столе. На данный момент сценарий просто отображает границу вокруг окна с помощью метода screen.border () и еще одну линию по всей ширине экрана. Я отобразил полосу на экране, используя это:

dimensions = screen.getmaxyx()    
screen.addstr(dimensions[0]/2, 0, "-"*dimensions[1])

Я запустил это в цикле, каждый раз сбрасывая размеры и используя getch, чтобы проверить наличие проклятий. KEY_RRESIZE, а затем запустил screen.erase (), чтобы позволить мне изменить размер окна, и скрипт все равно будет работать. Когда я запустил это в windows после установки колеса для python 3.7 (win32, потому что amd64 выдал ошибку), я обнаружил, что screen.getmaxyx () всегда возвращал одно и то же значение: начальный размер экрана и никогда не менялся при изменении размера окна , Я ценю любую помощь, если кто-то знает способ решить эту проблему, или если я просто не могу использовать проклятия на окнах, альтернативную библиотеку для окон. Спасибо!

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Вызовите resize_term (0, 0) после того, как вы получите KEY_RESIZE. (Я не уверен в точном отображении Python.)

0 голосов
/ 07 апреля 2019

Это ("на окнах"), вероятно, использует PDCurses, у которых нет способа автоматически обновлять размер экрана (например, как это делается с помощью обработчика ncurses на основе POSIX SIGWINCH).Скорее, он обнаруживает изменение размера окна, и приложение может вызвать is_termresized, чтобы решить, следует ли указывать библиотеке изменять структуры данных, чтобы они соответствовали, используя resize_term.

Оболочка Python не использует это.

...