Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Resetear color de la consola después de darle color
#1
Me explico, tengo un función llamada textcolor(), que le da un color a la consola, en este caso rojo, pero luego quiero que si una variable, que en este caso es vResetcolor y es True, la función textcolor al darle color a un texto en pantalla, ya no le dará color al siguiente print
, osea el siguiente print se imprimirá sin color.
Aca les dejo un ejemplo gráfico de lo que quiero:

[Imagen: 6BTEQ5O.png]
Para quitar el color se debió usar una función que en este caso es resetvideo(), pero como decía antes, quiero que se resetee automáticamente el color si la variable ya antes mencionada es True.
Les dejo el código:
Código:
[code]
vResetcolor = True

Black = ";30"
Gray = ";1;30"
Blue = ";34"
Cyan = ";36"
Green = ";32"
Magenta = ";35"
Red = ";31"
Yellow = ";33"
White = ";37"
abgcolor = Black
acolor = White

def resetvideo():
       print("x1b[;0m")

def textcolor(color):
       bgcol = abgcolor
       print("x1b[%s%sm" % (color, bgcol))
       global acolor
       acolor = color
       return ""

[/code]
y acá para Windows:
Código:
[code]
import ctypes

vResetcolor = True

STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE = -12
LF_FACESIZE = 32

std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)

Black = 0
Blue = 1
Green = 2  
Red = 4
Yellow = 6
Cyan = 3
Magenta = 5
White = 7
Gray = 8

abgcolor = Black
acolor = White

def resetvideo():
       ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, 0|7)

def textcolor(color):
       bgcol = abgcolor
       ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color | bgcol)
       global acolor
       acolor = color
       return ""
[/code]

Saludos
Responder
#2
No es posible a menos que redefinas print(), lo cual es una práctica bastante dudosa.

Código:
old_print = print
def print(*args, **kwargs):
    global vResetcolor
    if vResetcolor:
        resetvideo()
        vResetcolor = False
    old_print(*args, **kwargs)

print("Hola, mundo!")

De todos modos no veo cuál sería el beneficio de hacer vResetcolor = True en lugar de resetvideo().
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)