Python 控制台全屏?也许使用 os.system?
Python console Fullscreen? Maybe using os.system?
我正在尝试弄清楚如何让我的程序在全屏控制台中打开 window。
是否可以在命令提示符中键入任何命令来切换全屏?
如果是这样,我想代码会是这样的:
from os import system
system("toggle.fullscreen")
{CODE HERE}
我知道可以使用 con 模式,但这实际上并没有将其切换为最大化,这对我来说更有用,谢谢!
这是一个最大化当前控制台的函数window。它使用 ctypes 调用 WinAPI 函数。首先它调用 GetLargestConsoleWindowSize
来计算它可以使 window 有多大,并可以选择指定超过此值的 lines
的数量以获得回滚缓冲区。要完成调整屏幕缓冲区大小的工作,它只需通过 subprocess.check_call
调用 mode.com。最后,它通过 GetConsoleWindow
获取控制台 window 句柄并调用 ShowWindow
来最大化它。
import os
import ctypes
import msvcrt
import subprocess
from ctypes import wintypes
kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
user32 = ctypes.WinDLL('user32', use_last_error=True)
SW_MAXIMIZE = 3
kernel32.GetConsoleWindow.restype = wintypes.HWND
kernel32.GetLargestConsoleWindowSize.restype = wintypes._COORD
kernel32.GetLargestConsoleWindowSize.argtypes = (wintypes.HANDLE,)
user32.ShowWindow.argtypes = (wintypes.HWND, ctypes.c_int)
def maximize_console(lines=None):
fd = os.open('CONOUT$', os.O_RDWR)
try:
hCon = msvcrt.get_osfhandle(fd)
max_size = kernel32.GetLargestConsoleWindowSize(hCon)
if max_size.X == 0 and max_size.Y == 0:
raise ctypes.WinError(ctypes.get_last_error())
finally:
os.close(fd)
cols = max_size.X
hWnd = kernel32.GetConsoleWindow()
if cols and hWnd:
if lines is None:
lines = max_size.Y
else:
lines = max(min(lines, 9999), max_size.Y)
subprocess.check_call('mode.com con cols={} lines={}'.format(
cols, lines))
user32.ShowWindow(hWnd, SW_MAXIMIZE)
您可以使用 keyboard.press
。如果未安装,请使用 pip3 install keyboard
安装。
代码:
import keyboard
keyboard.press('f11')
我在另一个 post 上发现了这个,它非常适合控制台 window 最大化:
import win32gui, win32con
hwnd = win32gui.GetForegroundWindow()
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)
我正在尝试弄清楚如何让我的程序在全屏控制台中打开 window。
是否可以在命令提示符中键入任何命令来切换全屏?
如果是这样,我想代码会是这样的:
from os import system
system("toggle.fullscreen")
{CODE HERE}
我知道可以使用 con 模式,但这实际上并没有将其切换为最大化,这对我来说更有用,谢谢!
这是一个最大化当前控制台的函数window。它使用 ctypes 调用 WinAPI 函数。首先它调用 GetLargestConsoleWindowSize
来计算它可以使 window 有多大,并可以选择指定超过此值的 lines
的数量以获得回滚缓冲区。要完成调整屏幕缓冲区大小的工作,它只需通过 subprocess.check_call
调用 mode.com。最后,它通过 GetConsoleWindow
获取控制台 window 句柄并调用 ShowWindow
来最大化它。
import os
import ctypes
import msvcrt
import subprocess
from ctypes import wintypes
kernel32 = ctypes.WinDLL('kernel32', use_last_error=True)
user32 = ctypes.WinDLL('user32', use_last_error=True)
SW_MAXIMIZE = 3
kernel32.GetConsoleWindow.restype = wintypes.HWND
kernel32.GetLargestConsoleWindowSize.restype = wintypes._COORD
kernel32.GetLargestConsoleWindowSize.argtypes = (wintypes.HANDLE,)
user32.ShowWindow.argtypes = (wintypes.HWND, ctypes.c_int)
def maximize_console(lines=None):
fd = os.open('CONOUT$', os.O_RDWR)
try:
hCon = msvcrt.get_osfhandle(fd)
max_size = kernel32.GetLargestConsoleWindowSize(hCon)
if max_size.X == 0 and max_size.Y == 0:
raise ctypes.WinError(ctypes.get_last_error())
finally:
os.close(fd)
cols = max_size.X
hWnd = kernel32.GetConsoleWindow()
if cols and hWnd:
if lines is None:
lines = max_size.Y
else:
lines = max(min(lines, 9999), max_size.Y)
subprocess.check_call('mode.com con cols={} lines={}'.format(
cols, lines))
user32.ShowWindow(hWnd, SW_MAXIMIZE)
您可以使用 keyboard.press
。如果未安装,请使用 pip3 install keyboard
安装。
代码:
import keyboard
keyboard.press('f11')
我在另一个 post 上发现了这个,它非常适合控制台 window 最大化:
import win32gui, win32con
hwnd = win32gui.GetForegroundWindow()
win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE)