Я работаю над терминальным приложением для окон, которое называется «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) Изменить шрифт с помощью метода, который я нашел здесь: Изменить шрифт консоли в 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.Как я могу это сделать?