Win32 Screensaver: Bildschirmschoner mit Python

Gute Links und Tutorials könnt ihr hier posten.
Antworten
schlangenbeschwörer
User
Beiträge: 419
Registriert: Sonntag 3. September 2006, 15:11
Wohnort: in den weiten von NRW
Kontaktdaten:

Hallo!

Vorbereitungen:
Das Win32 Screensaver Paket von Chris Liechti downloaden und irgendwo (zB in \Lib\site-packages) entpacken.
Falls noch nicht vorhanden, ctypes, py2exe und evtl. pygame installieren.

Der erste Bildschirmschoner:
Man kann entweder vorgegebene Methoden nutzen, die über ctypes direkt Windows ansprechen, oder pygame verwenden.
Da ich mich mit pygame nicht sonderlich gut auskenne, habe ich die bereitgestellten Methoden benutzt.
Als "Thema" habe ich "Hopalongs" gewählt, da diese schön anzusehen,
leicht zu programmieren und sonst recht schwer zu "verkaufen" sind.

So gehts:
a) Der Code
Man muss nur wie in den Beispielen eine Child-Class schreiben, die von ``pyscr.Screensaver`` erbt und einige Methoden überschreiben:

Name Aufgerufen
- initialized beim Start
- finalize vorm Beenden
- tick in regelmäßigen Abständen zum Bildaufbau
- configure beim Klick auf "Eigenschaften" im Windows-"Eigenschaften" Dialog
Zudem kann man über das Klassenattribut TIMEBASE die Länge der Pausen zwischen den ``tick``-Aufrufen festlegen.

``filalize`` und evtl. auch ``inizialized`` muss man nicht umbedingt überschreibe, in ``tick`` kommt das, was man machen möchte und
in ``configure`` kann man mit einem beliebigen Toolkit einen Konfigurationsdialog schreiben,
wobei man sich selbst um das Speichern und Laden der Daten kümmern muss.
Um das ganze zwischendurch mal zu testen, kann man in der Comandozeile /s und /c verwenden (show/config).

b) Vom Code zum Screensaver

Code: Alles auswählen

buildScr.py [options] Modulname.py
erstellt aus dem zuvor geschriebenen Modul mit der abgeleiteten Screensaver-Klasse mit py2exe eine .scr Datei. (Eigentlich ist es nur eine umbenannte .exe)
Options sind

-g, --pygame für den "pygame mode"
und
-d, --data für mitzukopierende Dateien


Ein Beispiel:
Meinen ersten Bildschirmschoner habe ich noch etwas erweitert:
Je nach Konfiguration wird bei jedem "Aktivieren" des Bildschirmschoners ein Hopalong mit festgelegten oder zufälligen Werten erzeugt,
wobei alle x Schritte die Farbe gewechselt werden kann. Sobald die Maus bewegt bzw. der Bildschirmschoner beendet wird,
wird, ebenfalls je nach Konfiguration, ein Screenshot erstellt, gespeichert und angezeigt.
Den Konfigurationsdialog habe ich mit Tkinter geschrieben, die Screenshots werden mit der PIL gemacht,
das beliebige Programm zum Anzeigen wird mit subprocess gestartet.

Da ich noch nicht fertig mit dem Dialog bin, hier erstmal eine beta-version

Ich werde das dann hier ergänzen...

Gruß

PS: Vlt. mag ja jmd. mit besseren pygame-Kentnissen auch noch einen machen. (Die pygame-Beispiele liefen bei mir irgendwie nicht)
Antworten