Hi!
Ich bin neu hier und habe mich heute etwas eingelesen. Ich beschäftige mich seit kurzer Zeit mit Python und bin gerade dabei, ein kleines Programm mit wxPython zu erstellen. Das Zeichnen klappt wunderbar. Ich hab allerdings das Problem, dass beim Öffnen eines Dialogs das gezeichnete Bild teilweise verschwindet.
Deswegen hab ich mir die Beispiele von Gerold und einige anderen Seiten angeguckt. Das Buch wxPython in Action hab ich leider noch nicht.
Ich nutze auch eine Methode zum Zeichnen, die wx.ClientDC verwendet.
Code: Alles auswählen
def Draw(self, event):
dc = wx.ClientDC(self.splitter.GetWindow1())
dc.Clear()
dc.DrawEllipse(x, y, 26, 26)
Ich würde das Zeichnen jetzt gerne so umsetzen, dass die Zeichnung beim Öffnen von Dialogen nicht mehr verschwindet.
Dazu erzeuge ich ein leeres Bitmap:
Code: Alles auswählen
self._buffer_bmp = wx.EmptyBitmap(*self.GetSizeTuple())
Dann noch die Methode on_paint, die dafür da ist, mein Bild aus dem Buffer zu zeichnen?
Code: Alles auswählen
def on_paint(self, event):
dc = wx.BufferedPaintDC(self, self._buffer_bmp, style = wx.BUFFER_VIRTUAL_AREA)
Leider sind alle meine Versuche die "Draw"-Methode anzupassen gescheitert. Sehe ich es richtig, dass ich anstatt wx.ClientDC wx.MemoryDC(self._buffer_bmp) benutzen muss?
Aber wie wird das Bild dann gezeichnet? Wann und wie wird on_paint aufgerufen? Wie zeichne ich das Bild in mein Splitter-Fenster?
Ich hoffe, dass ich mich einigermaßen verständlich ausdrücken konnte und mir jemand helfen kann.
Danke
Maik