pygameでウィンドウ位置の保存と復元

例えばこういうTips。


pygameを使ったときにそのままではウィンドウの位置を変更したり取得したりすることができません。アプリケーションによっては前回のウィンドウ位置を保存して次回起動時に再現したい場合もありますが、そういったことを実現するためにはpywin32モジュールを入れる必要があります。pywin32を使うとwin32apiをPythonから使用することができるのでウィンドウハンドルさえわかればウィンドウの位置の変更などを実現することができます。
ダウンロード:Python for Windows extensions - Browse /pywin32/Build 200 at SourceForge.net

import pygame
import win32gui

pygame.init()

width = 640
height = 480

# ウィンドウハンドルを取得することができます。
wm_info = pygame.display.get_wm_info()
handle = wm_info['window']

# ウィンドウの移動
# MoveWindow(ウィンドウハンドル, x座標, y座標, 横幅, 縦幅, 再描画するか)
win32gui.MoveWindow(handle,0,0,width,height,1)

# ウィンドウの生成
surface = pygame.display.set_mode((width,height),0,32)

# ウィンドウ位置の取得
# GetWindowPlacement(ウィンドウハンドル) => (最小化,最大化,通常時などの各種位置とフラグ)
place = win32gui.GetWindowPlacement(handle)
x = place[4][0]
y = place[4][1]

ウィンドウの移動はウィンドウ生成前にやっておかないと移動する過程が見えてしまうので注意。