On Sun, Oct 14, 2007 at 04:55:14AM +0000, Richard wrote: > How do I maximize the pygame window or start it maximized? not fullscreen, > just > maximized. by code, not by clicking on the maximize button. i can't find a > way > to do this. if there's really not a way to do it, that's kind of > disappointing. Hi,
you can't using a built-in Pygame function. There is iconify() but no corresponding restore() or maximize(). It is a limitation of the underlying SDL library, which is being fixed in SDL-1.3 (or SDL-2). For now, I use the ctypes module to call the platform-specific functions: import sys import pygame if sys.platform == "win32": from ctypes import windll, Structure, c_long, c_ulong, sizeof, byref SW_HIDE = 0 SW_SHOWNORMAL = 1 SW_NORMAL = 1 SW_SHOWMINIMIZED = 2 SW_SHOWMAXIMIZED = 3 SW_MAXIMIZE = 3 SW_SHOWNOACTIVATE = 4 SW_SHOW = 5 SW_MINIMIZE = 6 SW_SHOWMINNOACTIVE = 7 SW_SHOWNA = 8 SW_RESTORE = 9 SW_SHOWDEFAULT = 10 SW_FORCEMINIMIZE = 11 SW_MAX = 11 SWP_NOSIZE = 0x0001 SWP_NOMOVE = 0x0002 SWP_NOZORDER = 0x0004 SWP_NOREDRAW = 0x0008 SWP_NOACTIVATE = 0x0010 SWP_FRAMECHANGED = 0x0020 SWP_SHOWWINDOW = 0x0040 SWP_HIDEWINDOW = 0x0080 SWP_NOCOPYBITS = 0x0100 SWP_NOOWNERZORDER = 0x0200 SWP_NOSENDCHANGING = 0x0400 SWP_DRAWFRAME = SWP_FRAMECHANGED SWP_NOREPOSITION = SWP_NOOWNERZORDER HWND_TOP = 0 HWND_BOTTOM = 1 HWND_TOPMOST = -1 HWND_NOTOPMOST = -2 user32 = windll.user32 IsIconic = user32.IsIconic IsZoomed = user32.IsZoomed ShowWindow = user32.ShowWindow GetWindowRect = user32.GetWindowRect SetWindowPos = user32.SetWindowPos GetForegroundWindow = user32.GetForegroundWindow SetForegroundWindow = user32.SetForegroundWindow class RECT(Structure): _fields_ = [ ('left', c_long), ('top', c_long), ('right', c_long), ('bottom', c_long), ] def width(self): return self.right - self.left def height(self): return self.bottom - self.top def getSDLWindow(): return pygame.display.get_wm_info()['window'] def SDL_IsIconic(): return IsIconic(getSDLWindow()) def SDL_IsMaximized(): return IsZoomed(getSDLWindow()) def SDL_Minimize(): return ShowWindow(getSDLWindow(), SW_MINIMIZE) def SDL_Maximize(): return ShowWindow(getSDLWindow(), SW_MAXIMIZE) def SDL_Restore(): return ShowWindow(getSDLWindow(), SW_RESTORE) def SDL_Show(state): state = (SW_HIDE, SW_SHOW)[bool(state)] return ShowWindow(getSDLWindow(), state) def SDL_Activate(): hWnd = getSDLWindow() if GetForegroundWindow() != hWnd: SetForegroundWindow(hWnd) def SDL_GetWindowPos(): rc = RECT() GetWindowRect(getSDLWindow(), byref(rc)) return rc.left, rc.top def SDL_SetWindowPos(x, y): return SetWindowPos(getSDLWindow(), 0, x, y, 0, 0, SWP_NOZORDER|SWP_NOSIZE) def SDL_AlwaysOnTop(state): zorder = (HWND_NOTOPMOST, HWND_TOPMOST)[state] return SetWindowPos(getSDLWindow(), zorder, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE) else: def SDL_IsIconic(): return 0 def SDL_IsMaximized(): return 0 def SDL_Minimize(): return 0 def SDL_Maximize(): return 0 def SDL_Restore(): return 0 def SDL_Show(state): return 0 def SDL_Activate(): pass def SDL_GetWindowPos(): return (-1, -1) def SDL_SetWindowPos(x, y): return 0 def SDL_AlwaysOnTop(state): return 0 I don't have any code for X, but I don't believe it's much more complicated. Equivalent functions could be added to Pygame with support for other Windowing systems, regards, John.