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
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
posted on 2014-06-06 16:16 Noah.Zhang 阅读(1998) 评论(0) 编辑 收藏 举报