有没有办法在
python 2.6中更改
Windows中的控制台字体?
我在Windows 7上.
即:
import os os.console.font = 'Lucida Console'
*编辑(意外发布此答案)
更多信息和问题:
我查看了Windows API:
http://msdn.microsoft.com/en-us/library/ms682073%28v=VS.85%29.aspx
看起来它具有更改控制台字体的功能:
SetCurrentConsoleFontEx
或者至少获取有关当前字体的信息:
GetCurrentConsoleFont GetCurrentConsoleFontEx
我的下一步是找到一个可以使用windows API的python模块.
这是一个名为pywin32:
http://sourceforge.net/projects/pywin32/
您导入的实际模块不是pywin32,而是win32api,win32net,win32console
我完全猜测了这一点.文档在哪里?
帮助运行(‘win32console’)
没有在那里显示所提到的字体功能,它只是简单地遗漏了它们.
我在这里错过了什么吗?文档在哪里?或者哪个模块具有所有API的控制台功能……?
解决方法
可以使用ctypes更改控制台字体.最小的代码示例如下所示:
import ctypes LF_FACESIZE = 32 STD_OUTPUT_HANDLE = -11 class COORD(ctypes.Structure): _fields_ = [("X",ctypes.c_short),("Y",ctypes.c_short)] class CONSOLE_FONT_INFOEX(ctypes.Structure): _fields_ = [("cbSize",ctypes.c_ulong),("nFont",("dwFontSize",COORD),("FontFamily",ctypes.c_uint),("FontWeight",("FaceName",ctypes.c_wchar * LF_FACESIZE)] font = CONSOLE_FONT_INFOEX() font.cbSize = ctypes.sizeof(CONSOLE_FONT_INFOEX) font.nFont = 12 font.dwFontSize.X = 11 font.dwFontSize.Y = 18 font.FontFamily = 54 font.FontWeight = 400 font.FaceName = "Lucida Console" handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) ctypes.windll.kernel32.SetCurrentConsoleFontEx( handle,ctypes.c_long(False),ctypes.pointer(font))
我还写了一个不那么简单的例子on my homepage.