Bild kann vom Programm aus manchmal nicht geladen werden!

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Benutzeravatar
fecub
User
Beiträge: 24
Registriert: Freitag 14. November 2008, 16:53
Kontaktdaten:

Grüßt euch leute!

habe folgendes problem, unzwa es gibt bei Gnuplot die möglichkeit das geplottete bild, grafik auf die platte zu speichern. Ich möchte dieses gespeicherte Bild auf meinem Programm anzeigen
per,

Code: Alles auswählen

   pic = wx.Bitmap("plot.png", type = wx.BITMAP_TYPE_PNG)
   stat_bmp = wx.StaticBitmap(self.panel, -1, pic, pos=(30, 30))
befehl. Das 1te bild wird geladen und angezeigt, läuft reibungslos.
Aber bei mir wird nicht nur ein bild erstellt sondern alle 10 sekunden.
Es werden regelmäßig ergebnisse in eine Log datei geschrieben und gnuplot nimmt die ergebnisse aus der Log datei und plottet die alle 10 sekunden und speichert es als grafik ab.

Und mein Programm lädt die gespeicherte grafik und zeigt es an, nur manchmal bekomme ich eine Fehlermeldung,

Code: Alles auswählen

Image file is not of type 15
ich denke mal der fehler tritt in dem momment auf wo gnuplot die grafik gerade erstellt und nicht fertig mit dem speichern ist und python in dem augenblick versucht es zu laden!?!?!?!?egal kann ich denn so ein fehler abfangen also per try...except? oder wie könnte ich es überprüfen ob wxPython mit der Grafik arbeiten kann?

Würde mich sehr freuen wenn Ihr bei meiner Problem behilflich seien würdet!

Gruß
fecub
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Versuche doch einfach mal den Fehler abzufangen und dann (vielleicht mit etwas Verzögerung), das Bild noch einmal zu laden. Die genaue Exception hast du uns ja nicht verraten, da du wohl nur den letzten Teil des Tracebacks gezeigt hast ;-)
Das Leben ist wie ein Tennisball.
Benutzeravatar
fecub
User
Beiträge: 24
Registriert: Freitag 14. November 2008, 16:53
Kontaktdaten:

das problem ist ja, es wird ein fenster geöffnet

screenshot:
http://img194.yfrog.com/img194/4163/bil ... oto1aw.png

So sieht die Fehlermeldung aus!
Zuletzt geändert von fecub am Sonntag 18. Oktober 2009, 16:30, insgesamt 1-mal geändert.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Ok, das ist natürlich ärgerlich.

Ich kenne mich wxPython nicht genau genug aus, daher weiß ich auch nicht genau, ob es auf diese Weg funktioniert und ob es noch eine bessere Lösung gibt (wovon ich einfach mal ausgehe).

Du könntest erst ein wx.Image erstellen und dies dann mittels wx.BitmapFromImage umwandeln. Zum Laden des Bildes habe ich wx.Image.LoadFile verwendet, was ein bool zurückliefert.

Du könntest es mal so versuchen, aber ich kann für nichts garantieren.

Edit: könntest du das Bild vielleicht noch auslagern oder verkleinern? Zumindest bei mir sprengt es die horizontalen Grenzen meines Bildschirms.
Das Leben ist wie ein Tennisball.
Benutzeravatar
fecub
User
Beiträge: 24
Registriert: Freitag 14. November 2008, 16:53
Kontaktdaten:

ok ich werde es mal ausprobieren
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Zwar etwas spät, aber mein Ansatz war ein ähnlicher:

Code: Alles auswählen

        img = wx.Image('plot.png', type=wx.BITMAP_TYPE_PNG)
        try:
            pic = wx.BitmapFromImage(img)
        except wx._core.PyAssertionError:
            print 'Fehlerhaftes Format'
MfG
HWK
Benutzeravatar
fecub
User
Beiträge: 24
Registriert: Freitag 14. November 2008, 16:53
Kontaktdaten:

danke für eure antworten!ich habe es so ausprobiert wie ihr es beschrieben habt, aber da hat sich nichts geändert. Bekomme die gleiche Fehlermeldung!
Gäbe es vieleicht eine andere Möglichkeit?
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Versuch mal das:

Code: Alles auswählen

wx.BITMAP_TYPE_ANY
lässt du das Bild im selben Programm erstellen? oder externes Programm?, rufst du es per wx.Timer dann auf?

wenn du es per wx.Timer aufrufst mach aus 10 sec 10.5
the more they change the more they stay the same
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

fecub hat geschrieben:danke für eure antworten!ich habe es so ausprobiert wie ihr es beschrieben habt, aber da hat sich nichts geändert. Bekomme die gleiche Fehlermeldung!
Gäbe es vieleicht eine andere Möglichkeit?
Mit Deiner ursprünglichen Variante konnte ich Deine Fehlermeldung reproduzieren, wenn ich eine TIF-Datei als PNG angeboten habe. Mit meiner Variante konnte ich dann diese Messagebox vermeiden und den Fehler abfangen. Bekommst Du denn jetzt immer noch diese Messagebox? Welche Zeile meines Codes löst Sie denn aus?
MfG
HWK
Antworten