2017-05-14 2 views
2

J'essaie de comprendre comment ouvrir mon programme dans une fenêtre de console en plein écran.Console Python Plein écran? Peut-être en utilisant os.system?

Existe-t-il une commande que vous pouvez taper dans l'invite de commande pour basculer en mode plein écran?

Si oui j'imagine le code va quelque chose comme:

from os import system 

system("toggle.fullscreen") 

{CODE HERE} 

Je comprends le mode con peut être utilisé, mais cela ne fait basculer étant maximisée, ce qui serait beaucoup plus utile pour moi , Merci!

+0

Windows CMD ne peut pas faire le plein écran de toute façon, AFAIK –

+0

Cela est incorrect. Je peux appuyer sur le bouton maximiser sur CMD et ça marche bien. Quand je dis en plein écran, je ne veux pas dire que le plein écran prend du temps. Je veux dire plein écran fenêtré. Désolé pour la confusion. –

+1

Copie possible de [Comment faire un fichier batch en plein écran?] (Http://stackoverflow.com/questions/26626068/how-to-make-a-batch-file-fullscreen) –

Répondre

2

Voici une fonction pour maximiser la fenêtre de la console actuelle. Il utilise ctypes pour appeler les fonctions WinAPI. D'abord, il appelle GetLargestConsoleWindowSize afin de comprendre la taille de la fenêtre, avec l'option de spécifier un nombre de lines qui dépasse cette valeur pour obtenir un tampon de retour. Pour faire le travail de redimensionnement du tampon d'écran, il appelle simplement mode.com via subprocess.check_call. Enfin, il obtient le handle de la fenêtre de la console via GetConsoleWindow et appelle ShowWindow pour le maximiser.

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) 
+0

Absolument parfait! Je vous remercie!! :) –