Bild wird unter Windows erst nach Minimierung angezeigt

Plattformunabhängige GUIs mit wxWidgets.
Antworten
AllesMeins
User
Beiträge: 63
Registriert: Donnerstag 20. November 2003, 13:45
Wohnort: Frankfurt/M.

Hi,

ich versuche gerade ein Script, dass ich für Linux geschrieben habe, auch unter Windows zum Laufen zu bringen. Leider funktioniert das nicht vollständig. Ich versuche mit wx.StaticBitmap ein Bild anzuzeigen. Vom Bild werden aber nur 2 kleine (etwa 10x10px große) Quadrate angezeigt. Erst wenn ich das Fenster Minimiere und dann wiederherstelle wird das Bild angezeigt. Alternativ kann ich auch das Fenster verkleinern - auf den Flächen die dann unsichtbar waren wird beim wieder vergrößern das Bild auch korrekt angezeigt... An sich mache ich zum Bild anzeigen nur das folgende:

Code: Alles auswählen

self.overlayPicture = wx.Image("overlay.gif", wx.BITMAP_TYPE_GIF)
[...]
overlayPicture = self.overlayPicture.Scale(overlaySize[0],overlaySize[1])
self.guiElements["overlay"] = wx.StaticBitmap(self, -1, wx.BitmapFromImage(overlayPicture), (pos[0], pos[1])) 
Wie gesagt: Unter Linux funktioniert der Code einwandfrei. Unter WindowsXP nicht. Auf beiden Systemen verwende ich Python 2.7.3
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Probier mal `self.Layout()`
the more they change the more they stay the same
AllesMeins
User
Beiträge: 63
Registriert: Donnerstag 20. November 2003, 13:45
Wohnort: Frankfurt/M.

Danke für die Antwort. Leider konnte ich bisher noch nichts damit anfangen. Habe schon ein paar Stellen, die mir sinnvoll erschienen, ausprobiert, aber es hat absolut nichts geändert...
Wo genau müsste das denn hin?

EDIT:
Ich habe einen Teil des Problems gelöst. Und ein neues dadurch bekommen...
Der Fehler war, dass ich self.Show() ausversehen zu weit vorne im Code aufgerufen habe (bevor ich das Bild gezeichnet hab). Wenn ich self.Show() nach dem zeichnen des Bildes aufrufe funktioniert es. Nun möchte ich aber das Bild dynamisch ändern können. Sprich: Erst auf Knopfdruck soll das Bild gezeichnet werden. Damit liegt das Zeichnen des Bildes aber natürlich wieder nach dem Aufruf von self.Show() und damit habe ich wieder das gleiche Problem. Ein erneutes Aufrufen von self.Show() bringt leider auch kein Lösung. Wie macht man das richtig?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Probier mal ein `self.Layout` und ein `self.Refresh` nach dem Neuzeichnen.
the more they change the more they stay the same
AllesMeins
User
Beiträge: 63
Registriert: Donnerstag 20. November 2003, 13:45
Wohnort: Frankfurt/M.

Super, dank dir! Das hat funktioniert!
Antworten