PyGame, Animation steht still, wenn das Fenster verschoben wird

Gast #5739149
Lesenswert?

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.
Gast #5739427
Lesenswert?

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.
Gast #5739707
Lesenswert?

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.
Gast #5739730
Lesenswert?

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...
Gast #5739737
Lesenswert?

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.
Gast #5739792
Lesenswert?

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.
Gast #5739814
Lesenswert?

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 :-).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren