我正在为Windows的“ BackTerminal”窗口开发终端应用程序,它的字体和窗口大小与普通/默认控制台不同。
我有一个方法可以做到这一点-并且它可以工作-但问题是它在打开时会迅速将控制台大小更改2-3倍,并且需要一秒钟的时间〜1秒。听起来有些挑剔,但我希望它更加整洁。
我当前的方法是这样的:
1)更改控制台大小
os.system("MODE 100,25")
2)更改缓冲区大小以允许滚动
os.system('powershell.exe -command "& {$pshost = Get-Host;$pswindow = $pshost.UI.RawUI;$newsize = $pswindow.BufferSize;$newsize.height = 9999;$pswindow.buffersize = $newsize;}"') #enables scrolling
3)使用我在这里找到的方法更改字体:Change console font in Windows
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 = 15
font.dwFontSize.X = 13
font.dwFontSize.Y = 14
font.FontFamily = 54
font.FontWeight = 400
font.FaceName = "Consolas"
handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
ctypes.windll.kernel32.SetCurrentConsoleFontEx(
handle, ctypes.c_long(False), ctypes.pointer(font))
理想情况下,我希望可以快速更改所有这些内容而又无需重复调整窗口大小。我认为这可能与ctypes有关。我该怎么办?