Python 更改cmd中的字色

本文介绍如何使用Python内置库ctypes调用Windows API来改变CMD窗口的字体颜色,提供了一个简单的示例代码,演示如何实现不同颜色的文字输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    没有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()


运行结果如下:



转载于:https://www.cnblogs.com/noahzn/p/4133251.html

### 使用Python更改Windows命令提示符字体 为了实现通过Python脚本改变Windows命令提示符(CMD中的字体,可以利用`ctypes`库来调用Windows API函数。具体来说,可以通过设置控制台文本属性的方式来修改的颜。 下面是一个简单的例子,展示如何创建一个Python程序来改变CMD窗口内的文本颜: ```python import ctypes # 定义标准输入输出句柄常量 STD_OUTPUT_HANDLE = -11 # 获取标准输出设备的句柄 std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) def set_cmd_text_color(color, handle=std_out_handle): """(color) -> bit Example: set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) """ bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) return bool # 颜定义 (前景和背景组合) FOREGROUND_BLACK = 0x00 # 黑 FOREGROUND_BLUE = 0x01 # 蓝 FOREGROUND_GREEN = 0x02 # 绿 FOREGROUND_CYAN = 0x03 # 青 FOREGROUND_RED = 0x04 # 红 FOREGROUND_MAGENTA = 0x05 # 洋红 FOREGROUND_YELLOW = 0x06 # 黄 FOREGROUND_GREY = 0x07 # 浅灰 FOREGROUND_INTENSITY = 0x08 # 前景增强亮度标志位 BACKGROUND_BLACK = 0x00 # 黑 BACKGROUND_BLUE = 0x10 # 蓝 BACKGROUND_GREEN = 0x20 # 绿 BACKGROUND_CYAN = 0x30 # 青 BACKGROUND_RED = 0x40 # 红 BACKGROUND_MAGENTA = 0x50 # 洋红 BACKGROUND_YELLOW = 0x60 # 黄 BACKGROUND_GREY = 0x70 # 白 BACKGROUND_INTENSITY = 0x80 # 背景增强亮度标志位 if __name__ == "__main__": # 设置为亮绿 set_cmd_text_color(FOREGROUND_GREEN | FOREGROUND_INTENSITY) print("这是绿的文") # 还原默认颜 reset = FOREGROUND_GREY set_cmd_text_color(reset) ``` 上述代码展示了怎样使用`SetConsoleTextAttribute()`函数调整当前会话中显示符的颜[^1]。请注意,在实际应用此方法之前,可能需要确保环境配置支持这些API调用,并考虑到不同版本操作系统之间的兼容性差异[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值