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:
  1. vResetcolor = True
  2.  
  3. Black = ";30"
  4. Gray = ";1;30"
  5. Blue = ";34"
  6. Cyan = ";36"
  7. Green = ";32"
  8. Magenta = ";35"
  9. Red = ";31"
  10. Yellow = ";33"
  11. White = ";37"
  12. abgcolor = Black
  13. acolor = White
  14.  
  15. def resetvideo():
  16.        print("\x1b[;0m")
  17.  
  18. def textcolor(color):
  19.        bgcol = abgcolor
  20.        print("\x1b[%s%sm" % (color, bgcol))
  21.        global acolor
  22.        acolor = color
  23.        return ""
y acá para Windows:
Código:
  1. import ctypes
  2.  
  3. vResetcolor = True
  4.  
  5. STD_INPUT_HANDLE = -10
  6. STD_OUTPUT_HANDLE = -11
  7. STD_ERROR_HANDLE = -12
  8. LF_FACESIZE = 32
  9.  
  10. std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
  11.  
  12. Black = 0
  13. Blue = 1
  14. Green = 2  
  15. Red = 4
  16. Yellow = 6
  17. Cyan = 3
  18. Magenta = 5
  19. White = 7
  20. Gray = 8
  21.  
  22. abgcolor = Black
  23. acolor = White
  24.  
  25. def resetvideo():
  26.        ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, 0|7)
  27.  
  28. def textcolor(color):
  29.        bgcol = abgcolor
  30.        ctypes.windll.kernel32.SetConsoleTextAttribute(std_out_handle, color | bgcol)
  31.        global acolor
  32.        acolor = color
  33.        return ""

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

  1. old_print = print
  2. def print(*args, **kwargs):
  3. global vResetcolor
  4. if vResetcolor:
  5. resetvideo()
  6. vResetcolor = False
  7. old_print(*args, **kwargs)
  8.  
  9. print("Hola, mundo!")


De todos modos no veo cuál sería el beneficio de hacer vResetcolor = True en lugar de resetvideo().
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)