Sau đây tôi đã tìm ra bằng thử nghiệm trên máy tính của riêng mình (Ubuntu 14.04, python 3).
- Có 256 màu (được xác định bởi 8 bit đầu tiên).
- Các bit khác được sử dụng cho các thuộc tính bổ sung, chẳng hạn như làm nổi bật.
- Chuyển số -1 làm màu trở lại màu nền mặc định và màu nền trước.
- Cặp màu 0 (mod 256) được cố định trên (-1, -1).
- Màu 0 đến 15 là các màu của bảng màu đầu cuối.
Hãy xem xét mã thử nghiệm sau đây. Thêm phần này vào .bashrc
của bạn:
# Set proper $TERM if we are running gnome-terminal
if [ "$COLORTERM" == "gnome-terminal" ]
then
TERM=xterm-256color
fi
Đặt điều này trong một file python và chạy nó.
import curses
def main(stdscr):
curses.start_color()
curses.use_default_colors()
for i in range(0, curses.COLORS):
curses.init_pair(i + 1, i, -1)
try:
for i in range(0, 255):
stdscr.addstr(str(i), curses.color_pair(i))
except curses.ERR:
# End of screen reached
pass
stdscr.getch()
curses.wrapper(main)
Chạy nó sẽ mang lại kết quả như sau.
Như bạn thấy, màu sắc cặp 1-16 là những bảng màu thiết bị đầu cuối cho màu sắc foreground.
Nguồn
2014-03-04 08:30:09
Bạn có chắc chắn đây là mã cho ảnh chụp màn hình đó không? Trong hệ thống của tôi (Ubuntu 12.04), 'curses.COLORS' là 8, không phải 256, và bất kỳ nỗ lực nào để bắt đầu một cặp bằng cách sử dụng một màu ở trên mà ném ngoại lệ' _curses.error: init_pair() trả về ERR'. Bạn đang sử dụng module 'curses' nào, mô-đun mặc định từ stdlib của Python? – MestreLion
Có, tôi chắc chắn đó là ảnh chụp màn hình chính xác. Chạy nó một lần nữa trên ubuntu của tôi 14.04 (sử dụng python3) mang lại kết quả tương tự. Và 'curses.COLORS' là 256 đối với tôi. –
Vì vậy, Gnome Terminal cuối cùng có sử dụng 'TERM = xterm-256color' theo mặc định? Tuyệt quá! Hoặc bạn đã tự thêm nó vào '~/.profile' /' ~/.bashrc'? Bạn có thể kiểm tra các tệp đó cho bất kỳ mã liên quan đến 'TERM' nào không? – MestreLion