2010-09-05 122 views
2

Lors du lancement d'un fichier python de type script de Windows, vous obtenez une fenêtre de type shell Windows dans laquelle le script s'exécute. Comment le script peut-il déterminer et également définir/contrôler la taille de la fenêtre, la taille du tampon d'écran et la position de la fenêtre de cette fenêtre? Je pense que cela peut être fait avec le module pywin32 mais je ne trouve pas comment.Comment contrôler la taille de la fenêtre shell Windows à partir d'un script Python?

Répondre

9

Vous pouvez le faire en utilisant la fonction SetConsoleWindowInfo de l'API win32. Ce qui suit devrait fonctionner:

from ctypes import windll, byref 
from ctypes.wintypes import SMALL_RECT 

STDOUT = -11 

hdl = windll.kernel32.GetStdHandle(STDOUT) 
rect = wintypes.SMALL_RECT(0, 50, 50, 80) # (left, top, right, bottom) 
windll.kernel32.SetConsoleWindowInfo(hdl, True, byref(rect)) 

MISE À JOUR:

La position de la fenêtre est essentiellement ce que la variable rect ci-dessus à travers les ensembles left, top, right, bottom arguments. La taille réelle est dérivée de ces arguments:

width = right - left + 1 
height = bottom - top + 1 

Pour définir la taille de la mémoire tampon de l'écran, disons, 100 lignes par 80 colonnes, vous pouvez utiliser l'API SetConsoleScreenBufferSize:

bufsize = wintypes._COORD(100, 80) # rows, columns 
windll.kernel32.SetConsoleScreenBufferSize(h, bufsize) 
+0

Cela fonctionne pour réglage de la fenêtre Taille. Pouvez-vous également fournir du code pour la taille du tampon d'écran et la position de la fenêtre. Mes connaissances sur ctypes et l'API win32 sont nulles. – LtPinback

+0

@LtPinback: voir la mise à jour ci-dessus. – ars

+0

Est-ce que STDOUT ne devrait pas être en réalité -11? https://msdn.microsoft.com/en-us/library/ms683231(VS.85).aspx – user136036