Step 1 : พูดคุยรายละเอียดงาน

นัดพูดคุยกับทางแพลตฟอร์มเพื่อคุยรายละเอียดงานหรือส่งรายละเอียดงานผ่านฟอร์ม
โทรปรึกษาฟรี 0815459423

Step 2 : ขอใบเสนอราคา และชำระเงิน

ตกลงจ้างงาน โดยขอใบเสนอราคากับทางแพลตฟอร์ม และชำระเงิน

Step 3 : แพลตฟอร์มส่งงาน

ทางแพลตฟอร์มจะส่งงานให้ผู้ว่าจ้างตรวจสอบและปรับแก้ไขได้ 3 ครั้ง หากไม่มีแก้ไขถือว่าการส่งมอบงานเสร็จสิ้น

คำแนะนำเพิ่มเติม

Supapongai เป็นแพลตฟอร์มทำเว็บไซต์โดยคุณศุภพงศ์ Web Developer มืออาชีพ ร่วมงานกับบริษัทชั้นนำมากมาย เช่น FutureSkill , Skillane , The Blacksmith และอื่นๆ มั่นใจ ปลอดภัย งานดีมีคุณภาพ พร้อมไลน์ให้คำปรึกษาตลอดการใช้งาน

แสดงผลข้อความบน terminal เป็นสีสันสวยงาม ด้วยภาษา Python

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'])

ผลลัพธ์การรัน 

คำอธิบาย

  1. cprint จะรับพารามิเตอร์ 4 ตัว ได้แก่ ข้อความ, สีของตัวอักษร, สีพื้นหลัง, แอททริบิวพิเศษอื่นๆ (attrs) ตามลำดับ
  2. สีที่ขึ้นต้นด้วนคำว่า 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

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/