[python] Rozměry textového okna

Michal Molhanec molhanec na seznam.cz
Pondělí Březen 17 11:56:36 CET 2008


zu1234 napsal(a):
> Zdravím.
> 
> Potřebuji přerušovat zobrazení delšího textu:
> Kde by si mohl python program bežící pod windows-y v textovém okně 
> zjistit jeho (aktuální) rozměny (počet řádků s sloupců)?

Pro Python s ctypes (od Pythonu 2.5 soucast standardni knihovny):

def getConsoleWindowSize():
     """Return size of the console window on Windows as
        a tuple (width, height) or (None, None) if ctypes
        are not available or some error happens."""
     try:
         import ctypes

         class COORD(ctypes.Structure):
             _fields_ = [("x", ctypes.c_short),
                         ("y", ctypes.c_short)]

         class SMALL_RECT(ctypes.Structure):
             _fields_ = [("l", ctypes.c_short),
                         ("t", ctypes.c_short),
                         ("r", ctypes.c_short),
                         ("b", ctypes.c_short)]

         class CONSOLE_SCREEN_BUFFER_INFO(ctypes.Structure):
             _fields_ = [("size", COORD),
                         ("cursorPosition", COORD),
                         ("attrs", ctypes.c_ushort),
                         ("win", SMALL_RECT),
                         ("maxWinSize", COORD)]

         info = CONSOLE_SCREEN_BUFFER_INFO()

         handle = ctypes.windll.kernel32.GetStdHandle(-11)
         ctypes.windll.kernel32.GetConsoleScreenBufferInfo(handle,
                                               ctypes.byref(info))
         return (info.win.r - info.win.l + 1,
                 info.win.b - info.win.t + 1)
     except:
         return (None, None)

print getConsoleWindowSize()


Další informace o konferenci Python