zoukankan      html  css  js  c++  java
  • Python 更改cmd中的字色

        没有gui的python程序是在cmd窗口中运行的,黑色背景,灰色的字,确实很复古,不符合现代人的使用习惯…同事在用我写的小工具时,清一色的字色,看起来会没有重点性,因此我就想通过更改cmd中的字色来改善。

        在网上查了相应的资料,可以通过ctypes这个第三方模块来调用Windows API函数达到目的。可是我在sourceforge上只找到了适用于py2.5以下版本的ctypes,且作者已经不更新了…!!

        又在网上找ctypes的信息,竟然发现,从py2.7开始,这个库就已经被集成成标配了!!真是柳暗花明又一村,得来全不费功夫啊!!使用方法如下:


    # -*- coding: gb2312 -*- 
    
    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:
        std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
        
        def set_cmd_color(self, color, handle=std_out_handle):
            bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
            return bool
        
        def reset_color(self):
            self.set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
            #初始化颜色为黑色背景,纯白色字,CMD默认是灰色字体的
            
        def print_red_text(self, print_text):
            self.set_cmd_color(4 | 8)
            print print_text
            self.reset_color()
            #红色字体
            
        def print_green_text(self, print_text):
            self.set_cmd_color(FOREGROUND_GREEN | FOREGROUND_INTENSITY)
            c = raw_input(print_text)
            self.reset_color()
            return c
            #绿色字体。实现的是,让用户输入的字体是绿色的,记得返回函数值。
            
        def print_yellow_text(self, print_text): 
            self.set_cmd_color(6 | 8)
            print print_text
            self.reset_color()
            #黄色字体
    
        def print_blue_text(self, print_text): 
            self.set_cmd_color(1 | 10)
            print print_text
            self.reset_color()
            #蓝色字体
    
    
    clr = Color()
    clr.set_cmd_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY)
    clr.print_red_text('red')
    clr.print_green_text("输入: ")
    clr.print_blue_text('blue')
    clr.print_yellow_text('yellow')
    
    raw_input()


    运行结果如下:



    作者:Noah Zhang
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    小试阿里云容器服务
    .NET跨平台:再见dnx,你好dotnet cli
    使用Let's Encrypt手动创建https证书
    Chrome以https访问gitlab的问题:Your connection is not private
    [ASP.NET 5]终于解决:Unable to load DLL 'api-ms-win-core-localization-obsolete-l1-2-0.dll'
    Mac上远程桌面连接Windows Server 2012 R2
    解决JSON.stringify()在IE10下无法使用的问题
    解决阿里云SLB无法添加https证书的问题
    “状态机”学习笔记
    HttpClient读取ASP.NET Web API错误信息的简单方法
  • 原文地址:https://www.cnblogs.com/noahzn/p/4133251.html
Copyright © 2011-2022 走看看