1

这个问题中,我学会了如何为 Python 着色。我想出了所有的颜色代码,别担心。
无论如何,对我有用的答案是 orip 的 ctypes 之一。ctypes.windll.kernel32.SetConsoleTextAttribute(handle, AQUA)每次我想为文本着色时都必须输入,这有点烦人。有没有办法将其转换为函数?我不确定如何通过函数发送变量,也不确定如何实现它们,即使我这样做了。
提前致谢!-ghostmancer 对我来说重要的是它对我有用——我不打算放弃我的剧本。我的颜色:

BLACK    = 0x0000
BLUE    = 0x0001
GREEN    = 0x0002
RED    = 0x0004
PURPLE    = 0x0005
YELLOW    = 0x0006
WHITE    = 0x0007
GRAY    = 0x0008
GREY    = 0x0008
AQUA    = 0x0009 #Very Blue
4

5 回答 5

3

emmm……如果我没听错的话……

def a_func(handle,color):
   ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)

a_func(handle,AQUA)

甚至更好

colorFunc = ctypes.windll.kernel32.SetConsoleTextAttribute
colorFunc(handle,AQUA)
于 2012-09-09T05:17:47.333 回答
2

无需使用defor创建新函数lambda,只需将具有长名称的函数分配给较短的名称,例如:

textcolor = ctypes.windll.kernel32.SetConsoleTextAttribute
textcolor(handle, color)
于 2012-09-09T05:33:17.183 回答
1

一种方法是

def textcolor(handle, color):
    ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)

你这样称呼它:

textcolor(handle, AQUA)
于 2012-09-09T05:17:41.470 回答
0

您可以使用:

f=lambda handle,color:ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)

并且,f(<Actual handle object>, <color>)随时随地拨打电话。例如f(handle, AQUA)将是必需的调用

于 2012-09-09T05:19:02.453 回答
0

因为我看到变量'handle'到处都没有被定义,对于任何想知道的人来说,就stdout而言,这是一种获取它的方法,以便我们可以将它用于ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)

STD_OUTPUT_HANDLE = -11
handle = ctypes.windll.kernel32.GetStdHandle(-STD_OUTPUT_HANDLE)
于 2019-11-13T17:29:59.047 回答