在Windows XP中更改控制台字体大小

时间:2016-10-08 15:00:30

标签: python console-application

我正在尝试使用以下程序更改控制台字体大小。

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)]

def changefont():
    font = CONSOLE_FONT_INFOEX()
    font.cbSize = ctypes.sizeof(CONSOLE_FONT_INFOEX)
    font.nFont = 12
    font.dwFontSize.X = 30
    font.dwFontSize.Y = 30
    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))

changefont()
print "Hello world"

使用

将程序转换为可执行文件
pyinstaller --onefile demo.py

最终程序的执行适用于Win7系统,我得到一个改变字体大小的控制台。

然而,在旧的Windows XP笔记本电脑上做同样的事情,我得到了一个

AttributeError: function 'SetCurrentConsoleFontEx' not found

那里有些不同,但我不知道它是什么,我不知道从哪里开始。任何意见都赞赏。

0 个答案:

没有答案