python在windows命令行下输出彩色文字代码详解编程语言

默认情况下python在控制台输出的文字信息都是黑白的,如果能将文字做成彩色的输出,输出效果会更完美,也很酷,不是吗,下面是一段演示代码,这段代码封装了一个color类用来输出带颜色的文字,只要调用该类里面的相关方法就可以了,非常简单。

#!/usr/bin/env python  
#encoding: utf-8 
import ctypes 
  
STD_INPUT_HANDLE = -10 
STD_OUTPUT_HANDLE= -11 
STD_ERROR_HANDLE = -12 
  
FOREGROUND_BLACK = 0x0 
FOREGROUND_BLUE = 0x01 # text color contains blue. 
FOREGROUND_GREEN= 0x02 # text color contains green. 
FOREGROUND_RED = 0x04 # text color contains red. 
FOREGROUND_INTENSITY = 0x08 # text color is intensified. 
  
BACKGROUND_BLUE = 0x10 # background color contains blue. 
BACKGROUND_GREEN= 0x20 # background color contains green. 
BACKGROUND_RED = 0x40 # background color contains red. 
BACKGROUND_INTENSITY = 0x80 # background color is intensified. 
  
class Color: 
    ''' See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_api_reference.asp 
    for information on Windows APIs. - www.sharejs.com''' 
    std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) 
      
    def set_cmd_color(self, color, handle=std_out_handle): 
        """(color) -> bit 
        Example: set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY) 
        """ 
        bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) 
        return bool 
      
    def reset_color(self): 
        self.set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) 
      
    def print_red_text(self, print_text): 
        self.set_cmd_color(FOREGROUND_RED | FOREGROUND_INTENSITY) 
        print print_text 
        self.reset_color() 
          
    def print_green_text(self, print_text): 
        self.set_cmd_color(FOREGROUND_GREEN | FOREGROUND_INTENSITY) 
        print print_text 
        self.reset_color() 
      
    def print_blue_text(self, print_text): 
        self.set_cmd_color(FOREGROUND_BLUE | FOREGROUND_INTENSITY) 
        print print_text 
        self.reset_color() 
            
    def print_red_text_with_blue_bg(self, print_text): 
        self.set_cmd_color(FOREGROUND_RED | FOREGROUND_INTENSITY| BACKGROUND_BLUE | BACKGROUND_INTENSITY) 
        print print_text 
        self.reset_color()    
  
if __name__ == "__main__": 
    clr = Color() 
    clr.print_red_text('red') 
    clr.print_green_text('green') 
    clr.print_blue_text('blue') 
    clr.print_red_text_with_blue_bg('background')

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/8321.html

(0)
上一篇 2021年7月18日 19:32
下一篇 2021年7月18日 19:32

相关推荐

发表回复

登录后才能评论