我发现下面的代码应该以编程方式更改控制台字体大小。我在Windows10上。在
然而,无论我调整了什么值,我似乎无法控制字体大小,而且由于某种原因,当我运行这个脚本时打开的控制台非常宽。在
我不知道ctypes是如何工作的—我只想从Python内部修改控制台字体的大小。在
有实际可行的解决方案吗?在
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", ctypes.c_ulong),
("dwFontSize", COORD),
("FontFamily", ctypes.c_uint),
("FontWeight", ctypes.c_uint),
("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))
print("Foo")
这不是一个纯粹的python问题,但涵盖了windowsapi。在
查看CONSOLE_FONT_INFOEX结构的文档。每个字符的宽度和高度都有一个COORD成员。在
要更改控制台字体大小,可以将这些属性作为适当的值:
参考号:Change console font in Windows
我想首先指出:
ctypes页面(也列在上面的URLs中):[Python 3.Docs]: ctypes - A foreign function library for Python
我把你的密码改了一点。在
代码.py:
注意事项:
ctypes.wintypes
常量(引用标准的ctypes类型)(给代码一种类似于Win的风格)正如我在代码中所评论的,设置
COORD.X
似乎被忽略了。但是当设置COORD.Y
(设置为接近COORD.Y // 2
的值-可能是为了保持纵横比)时,它会自动设置。在我的机器上(Win 10x64),默认值是16。你可能想在最后把它放回去,以避免让控制台处于“挑战”状态(显然,Win调整cmd窗口大小,与字体大小(某种程度上)同步):相关问题 更多 >
编程相关推荐