Я экспериментировал с цветами Curses и столкнулся с небольшой проблемой.
Как указано в документации init_pair
, первый аргумент (номер пары) должен быть между 1
и curses.COLOR_PAIRS - 1
. Выполнение print(curses.COLOR, curses.COLOR_PAIR)
дает 256 65536
, поэтому можно подумать, что вызов courses.init_pair(40000, 1, 53)
(случайный пример) будет работать, но вместо этого я получаю сообщение об ошибке:
Traceback (most recent call last):
File "4-colors.py", line 38, in <module>
curses.wrapper(main)
File "/usr/lib/python3.8/curses/__init__.py", line 105, in wrapper
return func(stdscr, *args, **kwds)
File "4-colors.py", line 18, in main
curses.init_pair(40000, 1, 53)
OverflowError: signed short integer is greater than maximum
Конечно, реализация init_color (надеюсь, что я смотрю нужный файл) проверяет, находится ли номер пары цветов в границах короткого знака со знаком.
Почему? Есть ли способ обойти это и использовать все цвета моего терминала, а не только произвольную половину?
Полный исходный код MWE:
import curses
def main(window):
curses.start_color()
curses.use_default_colors()
curses.init_pair(40000, 1, 53)
curses.wrapper(main)