From 11e1aa0f865599bbb0715a9a8b35fa1c8dc59887 Mon Sep 17 00:00:00 2001 From: ninemine <1371605831@qq.com> Date: Tue, 21 Oct 2025 09:34:26 +0800 Subject: [PATCH] =?UTF-8?q?Colorful=E7=8B=AC=E7=AB=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Convention/Runtime/Config.py | 135 +++++++++++++++++++++++++++-------- [Test]/test.py | 5 +- 2 files changed, 108 insertions(+), 32 deletions(-) diff --git a/Convention/Runtime/Config.py b/Convention/Runtime/Config.py index ce7648e..022af40 100644 --- a/Convention/Runtime/Config.py +++ b/Convention/Runtime/Config.py @@ -5,35 +5,112 @@ import sys import threading import traceback import datetime -try: - from colorama import Fore as ConsoleFrontColor, Back as ConsoleBackgroundColor, Style as ConsoleStyle -except: - print("colorama is not installed") - class ConsoleFrontColor: - RED = "" - GREEN = "" - YELLOW = "" - BLUE = "" - MAGENTA = "" - CYAN = "" - WHITE = "" - RESET = "" - class ConsoleBackgroundColor: - RED = "" - GREEN = "" - YELLOW = "" - BLUE = "" - MAGENTA = "" - CYAN = "" - WHITE = "" - RESET = "" - class ConsoleStyle: - RESET = "" - BOLD = "" - DIM = "" - UNDERLINE = "" - REVERSE = "" - HIDDEN = "" + +# region ansi colorful + +# Copyright Jonathan Hartley 2013. BSD 3-Clause license +''' +This module generates ANSI character codes to printing colors to terminals. +See: http://en.wikipedia.org/wiki/ANSI_escape_code +''' + +CSI = '\033[' +OSC = '\033]' +BEL = '\a' + + +def code_to_chars(code): + return CSI + str(code) + 'm' + +def set_title(title): + return OSC + '2;' + title + BEL + +def clear_screen(mode=2): + return CSI + str(mode) + 'J' + +def clear_line(mode=2): + return CSI + str(mode) + 'K' + + +class AnsiCodes(object): + def __init__(self): + # the subclasses declare class attributes which are numbers. + # Upon instantiation we define instance attributes, which are the same + # as the class attributes but wrapped with the ANSI escape sequence + for name in dir(self): + if not name.startswith('_'): + value = getattr(self, name) + setattr(self, name, code_to_chars(value)) + + +class ConsoleCursor(object): + def UP(self, n=1): + return CSI + str(n) + 'A' + def DOWN(self, n=1): + return CSI + str(n) + 'B' + def FORWARD(self, n=1): + return CSI + str(n) + 'C' + def BACK(self, n=1): + return CSI + str(n) + 'D' + def POS(self, x=1, y=1): + return CSI + str(y) + ';' + str(x) + 'H' + + +class ConsoleFrontColorClass(AnsiCodes): + BLACK = 30 + RED = 31 + GREEN = 32 + YELLOW = 33 + BLUE = 34 + MAGENTA = 35 + CYAN = 36 + WHITE = 37 + RESET = 39 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 90 + LIGHTRED_EX = 91 + LIGHTGREEN_EX = 92 + LIGHTYELLOW_EX = 93 + LIGHTBLUE_EX = 94 + LIGHTMAGENTA_EX = 95 + LIGHTCYAN_EX = 96 + LIGHTWHITE_EX = 97 + +ConsoleFrontColor = ConsoleFrontColorClass() + +class ConsoleBackgroundColorClass(AnsiCodes): + BLACK = 40 + RED = 41 + GREEN = 42 + YELLOW = 43 + BLUE = 44 + MAGENTA = 45 + CYAN = 46 + WHITE = 47 + RESET = 49 + + # These are fairly well supported, but not part of the standard. + LIGHTBLACK_EX = 100 + LIGHTRED_EX = 101 + LIGHTGREEN_EX = 102 + LIGHTYELLOW_EX = 103 + LIGHTBLUE_EX = 104 + LIGHTMAGENTA_EX = 105 + LIGHTCYAN_EX = 106 + LIGHTWHITE_EX = 107 + +ConsoleBackgroundColor = ConsoleBackgroundColorClass() + +class ConsoleStyleClass(AnsiCodes): + BRIGHT = 1 + DIM = 2 + NORMAL = 22 + RESET_ALL = 0 + +ConsoleStyle = ConsoleStyleClass() + +# endregion class NotImplementedError(Exception): def __init__(self, message:Optional[str]=None) -> None: diff --git a/[Test]/test.py b/[Test]/test.py index 3f52b3d..d6c5d50 100644 --- a/[Test]/test.py +++ b/[Test]/test.py @@ -3,8 +3,7 @@ import os from time import sleep sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) -from Convention.Runtime.File import * +from Convention.Runtime.Config import * -file = ToolFile("[Test]")|"temp"|None -print(file.MustExistsPath()) +PrintColorful(ConsoleFrontColor.RED, "Hello, World!")