GUI, Flackern verhindern

Plattformunabhängige GUIs mit wxWidgets.
Antworten
george
User
Beiträge: 109
Registriert: Mittwoch 11. Januar 2006, 20:28
Wohnort: Berlin

Hey,

ich habe eine komplexere Grafik mit wxPython und PyAUI. Bei Aktualisierung der Controls, usw. flackern diese(verursacht durch Neuzeichnen).
Gibt es mit wxPython die Möglichkeit Grafiken(Frames) so zu zeichen, dass dies Flackern verhindert wird???
Also im Hintergrund(virtuell) neu zeichen und dann die Grafik auf dem Desktop darstellen.
Danke

george
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

george hat geschrieben:Bei Aktualisierung der Controls, usw. flackern diese(verursacht durch Neuzeichnen).
Hi george!

Vielleicht kannst du schon etwas mit Freeze() und Thaw() erreichen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

gerold hat geschrieben:
george hat geschrieben:Bei Aktualisierung der Controls, usw. flackern diese(verursacht durch Neuzeichnen).
Hi george!

Vielleicht kannst du schon etwas mit Freeze() und Thaw() erreichen.

mfg
Gerold
:-)
Hi,

Ja, ich stimme dir (Gerold) zu, vielleicht genügt das schon.

Andere Möglichkeit ist "Double Buffer Drawing".

Aus Wiki:
What Is Double Buffering?

Double buffering is storing the contents of a window in memory (the buffer), so that the screen can be easily refreshed without having to re-draw the whole thing.


mit Code Sample:
http://wiki.wxpython.org/index.cgi/Doub ... redDrawing

Ob und wie das mit PyAUI funktioniert, musst du (george) selbst probieren. :)

Nachtrag: weiss nicht, ob das mit "Core Controls" funktioniert (buttons, listbox, ...).
Diese zeichnen sich ja praktisch von selbst, im gegensatz zu Grafiken,
wo man das EVT_PAINT event verwendet und mit Hilfe der Device
Contexts neu zeichnet.

Sonst würde ich auf jeden Fall einmal vorher Gerolds Methode probieren.
Antworten