在Windows中更改控制台字体

有没有办法改变在Windows 2.6中的控制台字体?

我在Windows 7上。

即:

import os os.console.font = 'Lucida Console' 

*编辑 (无意中贴出这个答案)

一些更多的信息和问题:

我看着Windows API: http : //msdn.microsoft.com/en-us/library/ms682073%28v=VS.85%29.aspx

它看起来像它有改变控制台字体的function:

 SetCurrentConsoleFontEx 

或至less获取有关当前字体的信息:

 GetCurrentConsoleFont GetCurrentConsoleFontEx 

我的下一步是find一个Python模块,我可以使用Windows API。 这里有一个叫pywin32: http : //sourceforge.net/projects/pywin32/

您导入的实际模块不称为pywin32,但win32api,win32net,win32console我完全猜测了这一点。 文档在哪里? 在帮助上运行('win32console')

不会显示在那里提到的字体function,它只是简单地想念他们。 我在这里错过了什么? 文档在哪里? 或者哪里有一个模块,具有所有API的控制台function…?

可以使用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", 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)) 

我也在我的主页上写了一个不太简单的例子。

可能不会。 在Windows控制台中,字体是cmd.exe程序的属性并由其管理。

就像所有的事情一样,如果你反向设计cmd.exe的工作方式,存储字体信息的地方,如何强制它重新加载等等,你可能会破解它(用任何语言)系统没有以支持和记录的方式提供有关如何执行此功能的功能。

我看着Windows API: http : //msdn.microsoft.com/en-us/library/ms682073%28v=VS.85%29.aspx

它看起来像它有改变控制台字体的功能:

 SetCurrentConsoleFontEx 

或至少获取有关当前字体的信息:

 GetCurrentConsoleFont GetCurrentConsoleFontEx 

我的下一步是找到一个Python模块,我可以使用Windows API。 这里有一个叫pywin32: http : //sourceforge.net/projects/pywin32/

您导入的实际模块不称为pywin32,但win32api,win32net,win32console我完全猜测了这一点。 文档在哪里? 在帮助上运行('win32console')

不会显示在那里提到的字体功能,它只是简单地想念他们。 我在这里错过了什么? 文档在哪里? 或者哪里有一个模块,具有所有API的控制台功能…?

那么,我还没有深入到能够按名称选择字体(我怀疑这是可能的),但是这个代码(提供了pywin32安装)似乎做了一些有趣的控制台(必须是cmd.exe ,Console2不起作用,我不知道它是否适用于PowerShell):

 [C:Users/cji]|1> import win32console [C:Users/cji]|2> win32console.PyConsoleScreenBufferType( win32console.GetStdHandle( win32console.STD_OUTPUT_HANDLE ) ) <2> <PyConsoleScreenBuffer:19> [C:Users/cji]|3> p = _ [C:Users/cji]|6> p.SetConsoleFont( 1 ) [C:Users/cji]|7> p.SetConsoleFont( 2 ) # and so on, to: [C:Users/cji]|12> p.SetConsoleFont( 11 ) #this is Lucida Console, if I see correctly 

文档说, SetConsoleFont “没有记录在MSDN上”…但是,它肯定会使用当前的控制台字体,所以我认为你应该朝这个方向进行搜索。

另外,类似的问题: 我怎样才能改变控制台的字体?

如果有人读到这个问题,设置默认字体的PowerShell提示Lucida控制台不起作用,可能有几个原因(许多只与该特定的字体有关)。 我在这里博客了: http : //www.meadow.se/wordpress/setting-the-font-of-a-powershell-console-to-lucida-console-wont-work/

总之,对我来说,有必要将系统区域设置从瑞典语更改为英语(美国),但是还有其他几种可能的解决方案。

希望这可以帮助。

埃米尔

 from colorama import init init() from colorama import Fore, Back, Style print(Fore.COLORNAME) print(Back.COLORNAME) 

COLORNAME可以是:
黑,红,绿,黄,蓝,黄,青,白,
RESET将把颜色重置为默认值。

只需将此代码复制到代码中,然后将COLORNAME更改为任何您喜欢的颜色。

因为字体设置是系统范围的,所以不可能在一个会话中改变它。

您可以通过更改注册表中的某些值来更改全局字体,但是必须重新启动系统。