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
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解
    iOS开发~UI布局(一)初探Size Class
    OC登陆界面登陆按钮动画
    Git学习 --> 个人常用命令add,commit以及push
    Git使用之设置SSH Key
    【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)
    iOS网络检测Reachability 使用 Demo,可检测2、3、4G
    iOS提醒用户进入设置界面进行重新授权通知定位等功能
    iOS中 @synthesize 和 @dynamic 区别
    iOS 开发笔记
  • 原文地址:https://www.cnblogs.com/noahzn/p/4133251.html
Copyright © 2011-2022 走看看