Introduction
สวัสดีนักอ่านทุกท่าน เป็นยังไงกันบ้างครับสำหรับวันปีใหม่ที่ผ่านมา เที่ยวสนุกกันไหมเอ่ย สำหรับบทความนี้นะครับก็จะเป็นบทความแรกที่ผมเขียนขึ้นในปี 2564 นั่นเองงง เย้ๆ เปิดประเดิมด้วยด้านในเนื้อหาในบทความนี้ที่ผมกำลังจะเขียนก็จะมีเนื้อหาง่ายๆเกี่ยวกับการแสดงผลข้อความเป็นสีสันสวยงาม ผ่านทาง terminal หรือ Console โดยใช้ภาษา Python นั่นเองครับ ซึ่งในภาษา Python เนี่ยก็จะมี Library สำหรับไว้จัดการกับเรื่องพวกนี้อยู่หลายตัวเลย จะมีอะไรบ้างนั้น เรามาดูไปพร้อมๆกันดีกว่าครับ
Termcolor
สำหรับ Library ตัวแรกที่ผมจะเอามาแนะนำก็คือ termcolor ครับ บอกก่อนเลยว่าตัวนี้ผมก็ใช้อยู่เป็นประจำ เพราะมันสะดวกมากๆในการใช้งานเลย ทีนี้เรามาดูวิธีติดตั้งกันก่อนดีกว่าครับ
ติดตั้งผ่าน terminal ด้วยคำสั่ง
pip install termcolor
วิธีการใช้งาน
ใน termcolor จะมีอยู่ 2 ฟังก์ชันใหญ่ๆ ก็คือ colored และ cprint
- cprint จะเป็นฟังก์ชันที่เอาไว้ print เป็นสี ทำงานคล้าย print แบบปกติทั่วไป แต่จะให้สีตามที่เราใส่ property เข้าไปในฟังก์ชัน
- colored จะเป็นฟังก์ชันที่แปลงข้อความ (String) เป็นสี แต่ไม่ได้ print ทำให้เราต้องใช้งานร่วมกับฟังก์ชัน print ปกติอีกทีหนึ่ง
ตัวอย่างการใช้งาน cprint
from termcolor import cprint
cprint("Hello World Termcolor","blue","on_yellow",attrs=['bold','underline'])
cprint("Hello World Termcolor","cyan",attrs=['bold','underline'])
cprint("Hello World Termcolor","magenta",attrs=['bold'])
ผลลัพธ์การรัน
คำอธิบาย
- cprint จะรับพารามิเตอร์ 4 ตัว ได้แก่ ข้อความ, สีของตัวอักษร, สีพื้นหลัง, แอททริบิวพิเศษอื่นๆ (attrs) ตามลำดับ
- สีที่ขึ้นต้นด้วนคำว่า on_ จะเป็นสีพื้นหลัง (Text highlights) นั่นเองครับ เช่น on_yellow ก็จะเป็นสีพื้นหลังสีเหลือง
ตารางข้อมูล Property ต่างๆที่ใช้ได้
text color | Text highlights | Attribute |
---|---|---|
grey | on_grey | bold |
red | on_red | dark |
green | on_green | underline |
yellow | on_yellow | blink |
blue | on_blue | reverse |
magenta | on_magenta | concealed |
cyan | on_cyan | |
white | on_white |
PYFIGLET + TERMCOLOR
เป็นยังไงกันบ้างครับ ได้ลองใช้เจ้า termcolor เล่นๆดูแล้วบ้างหรือยังเอ่ย แต่ว่าเจ้า termcolor ตัวนี้ไม่ได้มีดีแค่ปริ้นสีอย่างเดียว แต่ยังสามารถทำคอมโบร่วมกับ library อีกตัวนึง ที่เอาไว้ทำ ASCII ART ที่มีชื่อว่าเจ้า pyfiglet ได้อีกด้วย ซึ่งเดี๋ยวผมจะมาพาทำให้ดูกันไปเลยครับ โดยให้เราติดตั้งเจ้า pyfiglet ก่อน ตามคำสั่งด้านล่างเลย
คำสั่งติดตั้ง pyfiglet
pip install pyfiglet
ตัวอย่างการใช้งาน
from termcolor import cprint
from pyfiglet import figlet_format
cprint(figlet_format("Hello World",font="slant"),"cyan",attrs=['bold'])
ผลลัพธ์การรัน
คำอธิบาย
figlet_format เป็นฟังก์ชันหนึ่ง จาก pyfiglet จะทำการแปลงข้อความของเราให้เป็น Text แบบ ASCII ART โดยชนิดของ Text ก็จะมีหลายแบบให้เลือก สามารถกำหนดผ่าน property ที่ชื่อว่า font ใน figlet_format ได้เลยครับ ซึ่งเราสามารถใช้คู่กับ cprint ที่เป็นฟังก์ชันของ termcolor ให้แสดงผล ASCII ART แบบเป็นสีได้ด้วย
ตาราง font ของ pyfiglet
font |
---|
slant |
dotmatrix |
3×5 |
3-d |
alligator |
bubble |
digital |
คำสั่งดูฟ้อนทั้งหมดของ PyFiglet
from pyfiglet import FigletFont
print(FigletFont.getFonts())
Colorama
library ตัวสุดท้ายที่ผมจะแนะนำในวันนี้ก็คือ Colorama ครับ เจ้าตัวนี้อาจจะใช้ยากกว่า termcolor นิดนึง แต่ให้ดูไว้เป็นทางเลือกแล้วกันครับ วิธีใช้ก็เหมือนเดิม ต้องติดตั้งก่อนตามคำสั่งด้านล่าง
คำสั่งติดตั้ง colorama
pip install colorama
ตัวอย่างการใช้งาน
from colorama import Fore, Back, Style
print(Fore.MAGENTA + 'some red text {}'.format(50))
print(Back.GREEN + 'and with a green background')
print(Style.DIM + 'and in dim text')
print(Style.RESET_ALL)
print('back to normal now')
ผลลัพธ์การรัน
ตารางค่า Property ต่างๆของ Colorama
Fore | Back | Style |
---|---|---|
BLACK | BLACK | DIM |
RED | RED | NORMAL |
GREEN | GREEN | BRIGHT |
YELLOW | YELLOW | RESET_ALL |
BLUE | BLUE | |
MAGENTA | MAGENTA | |
CYAN | CYAN | |
WHITE | WHITE | |
RESET | RESET |
คำอธิบาย
- Fore ย่อมาจาก Foreground Color แปลว่า สีของตัวอักษร การใช้งานสามารถทำได้โดยใช้ Fore.ชื่อสี เช่น Fore.RED (ก็จะได้ตัวอักษรสีแดง)
- BACK ย่อมากจาก Background Color แปลว่า สีพื้นหลังของตัวอักษร การใช้งานก็เหมือนกับ Fore เลย เช่น อยากได้พื้นหลังสีแดงก็ Back.RED เป็นต้น
- STYLE ในส่วนของ Property ตัวนี้จะทำหน้าที่คล้ายกับเจ้า attrs ที่เป็น Property ของฟังก์ชัน cprint ใน termcolor วิธีใช้ก็เช่นกัน STYLE.ชื่อStyle ตามในตารางเลย เช่น ผมอยากทำให้ตัวอักษรผมสว่างชัดขึ้นก็ใช้ STYLE.BRIGHT หรือแม้กระทั่งการ reset สีของตัวอักษรก็สามารถทำได้ด้วย STYLE.RESET_ALL เป็นต้น
การแสดงผลบน WINDOW
สำหรับเจ้าตัว termcolor นั้น จะมีข้อจำกัดอยู่อย่างหนึ่งก็คือ มันไม่สามารถแสดงผลสีได้อย่างถูกต้องถ้าเรารันบน Command Prompt ของ window นั่นเองครับ แต่ถ้าอยากให้แสดงผลได้อย่างถูกต้อง จะต้องพึ่งฟังก์ชันที่ชื่อว่า init() ของ colorama นั่นเองครับ มาดูตัวอย่างกันดีกว่า
Before ก่อนใช้ init()
After หลังใช้ init()
สรุป
สำหรับ library ที่ใช้สำหรับแสดงผลข้อความเป็นสีสันสวยงาม ที่ผมยกมาในวันนี้ก็เป็น library ที่ค่อนข้างใช้กันมากในหมู่คนที่เขียนภาษา Python ผมก็หวังว่านักอ่านทุกท่านจะลองเอาไปใช้งานดู และเป็นประโยชน์ไม่มากก็น้อย สุดท้ายนี้ผมก็ถือโอกาสส่งบทความนี้เป็นของขวัญปีใหม่ให้กับทุกท่านเลยนะครับ ขอให้นักอ่านทุกท่านสุขภาพแข็งแรง โชคดีในวันขึ้นปีใหม่ 2564 ทุกคนนะครับ สำหรับวันนี้ผมก็ขอตัวลาไปก่อน แล้วเจอกันบทความหน้า สวัสดีครับ
REFERENCES
https://pypi.org/project/colorama/
https://pypi.org/project/termcolor/
https://pypi.org/project/pyfiglet/