吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2885|回复: 18
收起左侧

[Python 转载] python 在控制台输出Color

[复制链接]
Cool_Breeze 发表于 2020-12-19 08:36
本帖最后由 Cool_Breeze 于 2020-12-19 08:38 编辑

[Python] 纯文本查看 复制代码
# coding=utf-8

# SetConsoleTextAttribute 函数是靠一个字节的低四位来控制前景色,高四位来控制背景色。(0b00000000 - 0b11111111)
# H 开头高亮

import ctypes, sys

class CmdColor(object):
    _STD_INPUT_HANDLE = -10
    _STD_OUTPUT_HANDLE = -11
    _STD_ERROR_HANDLE = -12
    
    F_BLACK = 0x00
    F_BLUE = 0x01
    F_GREEN = 0x02
    F_SKYBLUE = 0x03
    F_RED = 0x04
    F_VIOLET = 0x05
    F_YELLOW = 0x06
    F_WHITE = 0x07
    F_GRAY = 0x08
    F_HBLUE = 0x09
    F_HGREEN = 0x0A
    F_HSKYBLUE = 0x0B
    F_HRED = 0x0C
    F_HVIOLET = 0x0D
    F_HYELLOW = 0x0E
    F_HWHITE = 0x0F
    
    B_BLACK = 0x00
    B_BLUE = 0x10
    B_GREEN = 0x20
    B_SKYBLUE = 0x30
    B_RED = 0x40
    B_VIOLET = 0x50
    B_YELLOW = 0x60
    B_WHITE = 0x70
    B_GRAY = 0x80
    B_HBLUE = 0x90
    B_HGREEN = 0xA0
    B_HSKYBLUE = 0xB0
    B_HRED = 0xC0
    B_HVIOLET = 0xD0
    B_HYELLOW = 0xE0
    B_HWHITE = 0xF0
    
    def __init__(self):
        self._handle = ctypes.windll.kernel32.GetStdHandle(
            CmdColor._STD_OUTPUT_HANDLE)

    def setColor(self, color):
        ctypes.windll.kernel32.SetConsoleTextAttribute(self._handle, color)
    
    def reSetColor(self):
        self.setColor(self.F_WHITE)
        
    def print(self,color, mess):
        self.setColor(color)
        sys.stdout.write(mess)
        sys.stdout.flush()
        self.reSetColor()
 

if __name__ == '__main__':
    color = CmdColor()
    # color.setColor(color.F_HYELLOW | color.B_BLACK)
    # print('Cool_Breeze')
    # print('Cool_Breeze')
    # color.reSetColor()
    # 需要手动添加换行符
    # color.print((color.F_HSKYBLUE | color.B_GRAY), 'Cool_Breeze\n')
    # color.print(0x8B, 'Cool_Breeze\n')
    for n in range(1,256,1):
        color.print(n, f'{n:<4} hex:{bin(n):<12}')
        if n%5 == 0 :print()


结果图:
result.png

免费评分

参与人数 3吾爱币 +3 热心值 +3 收起 理由
kicebeauty + 1 + 1 谢谢@Thanks!
Johan_000 + 1 + 1 谢谢@Thanks!
pinesnow + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Cool_Breeze 发表于 2020-12-19 17:23
haidibingjing 发表于 2020-12-19 16:52
\033[1;31;40m ***********  \033[0m
这样设置的在pycharm中运行时是有颜色的   但是生成exe文件执行的 ...

这个是在Linux系统上面才会打印彩色! windows上面不会!
haidibingjing 发表于 2020-12-19 16:52
Cool_Breeze 发表于 2020-12-19 12:31
你说的太模糊! 我搞不清楚!...

\033[1;31;40m ***********  \033[0m
这样设置的在pycharm中运行时是有颜色的   但是生成exe文件执行的时候就没有颜色了
 楼主| Cool_Breeze 发表于 2020-12-19 08:40
[Python] 纯文本查看 复制代码
color.print(n, f'{n:<4} bin:{bin(n):<12}')

截图 hex 忘改了 应该是 bin
pinesnow 发表于 2020-12-19 09:10
以前一直想着彩色打印,但没弄过,看到这帖子果断点进来了,很实用。
haidibingjing 发表于 2020-12-19 10:00
请教个问题   py文件转成的exe运行的时候怎么改变颜色呢?
千年恨 发表于 2020-12-19 10:02
AttributeError: module 'ctypes' has no attribute 'windll' 啊哦&#128559;
 楼主| Cool_Breeze 发表于 2020-12-19 10:07
千年恨 发表于 2020-12-19 10:02
AttributeError: module 'ctypes' has no attribute 'windll' 啊哦&#128559;

你的python版本多少?我是3.7
 楼主| Cool_Breeze 发表于 2020-12-19 10:10
haidibingjing 发表于 2020-12-19 10:00
请教个问题   py文件转成的exe运行的时候怎么改变颜色呢?

代码写的啥,转成exe 也不会改变啊!
haidibingjing 发表于 2020-12-19 11:34
Cool_Breeze 发表于 2020-12-19 10:10
代码写的啥,转成exe 也不会改变啊!

就是用哪个模块或者代码可以再生成exe文件后也可以有颜色
 楼主| Cool_Breeze 发表于 2020-12-19 12:31
haidibingjing 发表于 2020-12-19 11:34
就是用哪个模块或者代码可以再生成exe文件后也可以有颜色

你说的太模糊! 我搞不清楚!...
BlueZ0514 发表于 2020-12-19 12:57
一天掌握一点小知识,感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-15 07:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表