Hallo Forum, ich habe eine Frage zu Python und Pygame, bei der es darum geht, dass die Animationen im Fenster still stehen, wenn das Fenster mit der Maus verschoben wird und auch, wenn man nur mit der Maus auf die Fensterleiste oben klickt. Ein Beispiel, bei dem das bei mir passiert, ist das am Ende dieser Website: https://nerdparadise.com/programming/pygame/part4 Kennt jemand den Grund dafür und wie eine Lösung aussehen könnte? Danke schonmal.
Das ist keine Eigenschaft von Pygame, sondern von deinem Window-Manager, wie/ob dieser compositing einsetzt, und wie/ob das compositing von der Hardware unterstützt wird. Bei mir laufen pygame-Animationen beim Verschieben weiter, das Fenster wird beim Verschieben Halbtransparent, hinter den Animationen scheint dann eben das Browser-Fenster durch: Windowmanager Kwin, Compositing über OpenGL. PyGame rendert so in eine OpenGL-Textur, Darstellung, Transparenz, Verzerrungen (Schwabbelige Fenster beim Verschieben) usw. rechnet die Grafikkarte in Hardware. Ob sich die Textur dabei verändert, ist der Grafikkarte egal.
Danke schonmal für die Erklärung. Dadurch habe ich eine weitere Frage: Ist dieser WindowManager unter Windows für PyGame einstell-/installierbar oder ist das nur unter Linux/Unix möglich?
Könnte sein, dass event.get() blockiert, wenn Du das Fenster verschiebst. Überprüfe das mal, z.B. in dem Du in der for event Schleife was auf die Konsole schreibst. Wenn die Ausgaben auch anhalten, während Du das Fenster verschiebst, ist es das wohl.
Zu schade, keine Ausgaben aus der Eventloop während das Fenster verschoben wird :-(. Kennt da jemand einen Workaround/Trick? Danke wieder einmal.
Typischerweise trennt man den Teil der blockieren kann von dem, der nicht blockieren darf. Also z.B. in dem der Zeichenteil in einen eigenen Thread ausgelagert wird. Dann kann event.get() blockieren und die Animation läuft weiter. Wie das jetzt genau bei pygame gehandhabt wird, weiss ich allerdings nicht, da gibt es bestimmt Tutorials zu...
Leider fand ich nichtmal eine Beschreibung oder Grund für das Blockieren der Animation. Ich werde dann aber mal ausprobieren, ob und wenn ja wie das Eventsystem vom Rest des Programms getrennt werden kann. Danke in jedem Fall für die Hilfe.
Felix schrieb: > unter Windows für PyGame Ah, sorry. bin von Linux ausgegangen, da gibt's eine klare Arbeitsteilung... Die Applikation ist für ihren Fensterinhalt zuständig, für das ganze Aussenherum der Windowmanager. Bei Windows ist das mehr vermischt, da muss sich eine Applikation selber verschieben, weswegen es gut sein kann, dass dabei eben keine Animationen weiterlaufen. Ist vermutlich historisch so gewachsen, und um die Kompatibilität zu Windows 3.1 auf DOS zu wahren nie geändert worden. Seit Vista gibts den "dwm.exe" der manche der Aufgaben übernimmt, die unter Unix dem windowmanager zufallen, aber das Fenster-Verschieben gehört glaube ich nicht dazu.
Ehrlich gesagt bin ich auch eher auf Linux aus. Aber eine Plattformunabhängigkeit kann auch nicht schaden. Daher hatte ich auf Win7 begonnen. Nichtsdestotrotz ist es super, zu wissen, dass Linux hier wieder mal sehr umgänglich ist. Daher natürlich auch danke für diese Info :-).
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.