2026/01/02(金) [n年前の日記]
#1 [python] Pythonでスクリーンセーバを作れないか実験中
Windows11 x64 25H2 + Python 3.10.10 で、Windows用のスクリーンセーバを作れないものか実験中。
以前も作ったことがあるのだけど、その時は pygame 1.9.6 + Python 3.8.10 を利用して作成していた。
そして、Windows用のスクリーンセーバのプレビューモードは、渡されたウインドウハンドルを利用して描画しなければいけないのだけど、そういう処理をするためには SDL 1.2 を利用してる pygame 1.x を使うしかなく…。 *1 しかし pygame 1.x は最近の Python では使えない。
ただ、Python + pywin32 を使えば、与えられたウインドウハンドルを利用して文字や画像を描画できることが先日分かったので、これならプレビューモードにも対応したスクリーンセーバを作れるのではないか、と。
さてはて、上手く行くのかどうか。
以前も作ったことがあるのだけど、その時は pygame 1.9.6 + Python 3.8.10 を利用して作成していた。
- pygame 1.9.6 は SDL 1.2 を利用している。
- pygame 2.0 は SDL 2.0 を利用している。
- pyagme 1.9 と 2.0 では、というか SDL 1.2 と SDL 2.0 は仕様が結構違っている。
- pygame 1.9 は昔のバージョンの Python でしか動かない。
- 最近のバージョンの Python で pygame を利用したかったら pygame 2.x を利用するしかない。
そして、Windows用のスクリーンセーバのプレビューモードは、渡されたウインドウハンドルを利用して描画しなければいけないのだけど、そういう処理をするためには SDL 1.2 を利用してる pygame 1.x を使うしかなく…。 *1 しかし pygame 1.x は最近の Python では使えない。
ただ、Python + pywin32 を使えば、与えられたウインドウハンドルを利用して文字や画像を描画できることが先日分かったので、これならプレビューモードにも対応したスクリーンセーバを作れるのではないか、と。
さてはて、上手く行くのかどうか。
*1: SDL 1.2 なら、特定の環境変数にウインドウハンドルを指定することで、SDL 1.2 の描画がそのウインドウハンドルに対して行われるようになる。ただ、SDL 2.0 ではその機能が削除された。
[ ツッコむ ]
以上です。