Làm cách nào để thêm màu vào mã python?

Các ứng dụng CLI thường trả về văn bản có cùng màu với thiết bị đầu cuối. Luôn có những trường hợp chúng tôi muốn làm nổi bật đầu ra cho người dùng, chẳng hạn như cảnh báo hoặc thông báo lỗi. Trong những trường hợp đó, một chút màu sắc có thể tạo ra sự khác biệt

Bài viết này hướng dẫn bạn cách in đầu ra có màu trong thiết bị đầu cuối bằng Python có và không có thư viện

Trình tự thoát ANSI

Máy điện báo [TTY] của bạn, hay đúng hơn là thiết bị đầu cuối của bạn, không chỉ có khả năng hiển thị đầu ra của một chương trình. Nó có thể hiển thị một con trỏ đang di chuyển, tô màu văn bản, xóa toàn bộ màn hình và hơn thế nữa ngoài đầu ra tĩnh. Bạn có thể đã thấy các tiện ích dòng lệnh với văn bản đầy màu sắc và thanh tiến trình. Làm cách nào để chúng tôi kiểm soát việc trình bày dữ liệu mà chúng tôi đang xuất ra thiết bị đầu cuối?

Chúng tôi sử dụng Trình tự/Mã Thoát ANSI. Đây là những chuỗi đặc biệt sửa đổi hành vi của thiết bị đầu cuối. Một ví dụ quen thuộc sẽ là ký tự \n, là một chuỗi Dòng mới. Nhập ký tự này sẽ in một dòng mới trong đầu ra

Văn bản được tô màu trên thiết bị đầu cuối của bạn dựa trên chuỗi ANSI Escape. Bài viết này tập trung vào các trình tự thoát để tô màu văn bản

Hai cách phối màu được sử dụng rộng rãi trong các thiết bị đầu cuối

  • 16 màu [8 Nền + 8 Nền trước]
  • 256 màu

Hãy bắt đầu tô màu đầu ra của chúng ta với tùy chọn 16 màu

16 màu sắc trong Python thô

Bảng 16 màu bao gồm hai bộ 8 màu, mỗi bộ [8 nền và 8 nền trước] và chúng có thể được hiển thị trong thiết bị đầu cuối bằng cách sử dụng cú pháp sau

Hãy thử nghiệm điều này, bằng cách in một mẫu màu sặc sỡ với văn bản đậm màu đỏ và nền màu vàng. Mã kiểu để thể hiện văn bản in đậm là 2. Mã màu cho văn bản màu đỏ ở nền trước là 3143 cho nền màu vàng. Vì vậy, với ý nghĩ đó, cú pháp để biểu diễn bố cục này là

print['\033[2;31;43m CHEESY']

Chạy lệnh trên trong trình thông dịch Python của bạn [hoặc tệp]. Bạn sẽ thấy đầu ra này

Điều đó không hoàn toàn đúng, văn bản sến sẩm của chúng tôi đang tràn sang dòng tiếp theo. Chúng tôi cần một điểm đặt lại để dừng in màu. Điều này có thể được thực hiện bằng cách nối thêm \033[0;0m vào chuỗi dưới dạng

print['\033[2;31;43m CHEESY \033[0;0m']

\033[0;0m đại diện cho mẫu thiết lập lại đưa thiết bị đầu cuối trở lại bảng màu ban đầu. Điều này sẽ cung cấp đầu ra sau

Trông đẹp hơn nhiều

16 màu trong Colorama - Mô-đun tích hợp

Colorama là một gói Python cung cấp các phương thức để in văn bản màu trong Python. Nó chỉ hỗ trợ sơ đồ 16 màu. Mô-đun chuẩn bị các chuỗi ANSI Escape để tạo văn bản có màu. Hãy cài đặt mô-đun với

print['\033[2;31;43m CHEESY \033[0;0m']
1

$ pip install colorama

Chúng tôi khuyên bạn nên cài đặt nó trong môi trường ảo. Sau khi thiết lập, hãy bắt đầu in văn bản màu với Colorama

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Đầu tiên chúng tôi nhập các chức năng.

print['\033[2;31;43m CHEESY \033[0;0m']
2 [để khởi tạo mô-đun và đặt
print['\033[2;31;43m CHEESY \033[0;0m']
3 thành
print['\033[2;31;43m CHEESY \033[0;0m']
4 để chúng tôi không phải đặt lại thủ công],
print['\033[2;31;43m CHEESY \033[0;0m']
5 [Đối tượng văn bản tiền cảnh],
print['\033[2;31;43m CHEESY \033[0;0m']
6 [Đối tượng nền] và
print['\033[2;31;43m CHEESY \033[0;0m']
7 [Đối tượng kiểu]. Mỗi đối tượng có bộ hằng số riêng có thể được gọi trong hàm
print['\033[2;31;43m CHEESY \033[0;0m']
8

Bằng cách nối các thành phần này theo cách thân thiện với con người, Colorama chuyển đổi các giá trị như

print['\033[2;31;43m CHEESY \033[0;0m']
9 thành 43 đối với đối tượng
print['\033[2;31;43m CHEESY \033[0;0m']
6,
$ pip install colorama
2 thành 31 đối với đối tượng
print['\033[2;31;43m CHEESY \033[0;0m']
5, v.v. Cuối cùng, chúng tôi kết thúc với một Trình tự ANSI, giống như lần trước, tuy nhiên, chúng tôi không cần phải tự biết mã - Colorama làm điều này cho chúng tôi

Không yêu cầu mẫu đặt lại, vì chúng tôi đã đặt đối số

print['\033[2;31;43m CHEESY \033[0;0m']
3 thành
print['\033[2;31;43m CHEESY \033[0;0m']
4 trong khi khởi tạo phiên bản

Chạy mã sẽ hiển thị này

256 màu trong Python thô

Với sự tiến bộ trong công nghệ, sơ đồ 256 màu thường thấy nhất trong các thiết bị đầu cuối. Nếu bạn đang sử dụng HĐH dựa trên Linux, bạn có thể kiểm tra bảng màu được thiết bị đầu cuối hỗ trợ bằng cách nhập lệnh sau

$ echo $TERM

Nếu lệnh này trả về

$ pip install colorama
7, thì thiết bị đầu cuối của bạn hỗ trợ tối đa 256 màu

Tự hỏi những màu sắc đó là gì?

Chúng ta có thể đi sâu vào ngay sau khi hiểu cú pháp của lược đồ 256 màu. Làm việc với 256 màu hơi khác so với làm việc với sơ đồ 16 màu

Có một trình giữ chỗ để xác định xem màu sẽ được áp dụng cho văn bản hay nền; . Tiếp theo là mã màu nằm trong khoảng từ 0 đến 255

Dựa trên cú pháp trên, hãy thử tạo lại biểu trưng StackAbuse trong Python bằng Trình tự thoát ANSI

Biểu trưng có nền màu xám nhạt [______3_______8] với các từ. Xếp chồng màu trắng [

$ pip install colorama
9] và Lạm dụng màu cam [
$ echo $TERM
0]. Và tất nhiên, mã đặt lại cần được nhúng vào chuỗi

Như đã nói, chúng ta có thể tạo lại logo bằng Trình tự ANSI này

>>> print["\033[48;5;236m\033[38;5;231mStack \033[38;5;208mAbuse\033[0;0m"]

Kết quả này trong

Đáng kinh ngạc. Thiết bị đầu cuối có thể in những màu nào khác?

Tập lệnh này chứa hai hàm in biến mà bạn chuyển vào chúng, trong Chuỗi thoát ANSI tương ứng. Sau khi chúng tôi chạy tập lệnh và chuyển vào

$ echo $TERM
1 trong một phạm vi nhất định, chẳng hạn như
$ echo $TERM
2 cho lược đồ 16 màu hoặc
$ echo $TERM
3 cho lược đồ 256 màu, nó sẽ in ra các chỉ số bằng màu ở các giá trị đó

Điều này sẽ in ra cả hai lược đồ được mã hóa màu trong thiết bị đầu cuối

Điều này có thể rất hữu ích như một tài liệu tham khảo nhanh trong khi xây dựng các tiện ích dòng lệnh

Phần kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu cách in đầu ra có màu, cho các ký tự mà chúng ta gửi đến luồng

$ echo $TERM
4. Chúng tôi đã khám phá cách thực hiện việc này bằng cách sử dụng chức năng tích hợp sẵn mà Python cung cấp, cũng như cách sử dụng thư viện Colorama

Chủ Đề