Guten abend,
weiss jemand zufällgi wie man ein GIF mit wxPython lib laden kann ( also einfach auf nen Panel packen) ?
Merci
Gruß
Mylendjir
[wxPython] Gif darstellen
Hallo Mylendjir
Vielleicht hilft Dir folgender kleiner Beispielcode, der ein Gif auf einen Frame malt. Leider kann man ein wxImage nicht direkt zeichnen, sondern muss es erst in ein wxBitmap umwandeln. Das kann man dann mit wxDC.DrawBitmap() zeichnen.
Vielleicht hilft Dir folgender kleiner Beispielcode, der ein Gif auf einen Frame malt. Leider kann man ein wxImage nicht direkt zeichnen, sondern muss es erst in ein wxBitmap umwandeln. Das kann man dann mit wxDC.DrawBitmap() zeichnen.
Code: Alles auswählen
class MyFrame(wxFrame):
def __init__(self, *args, **kwds):
kwds["style"] = wxDEFAULT_FRAME_STYLE
wxFrame.__init__(self, *args, **kwds)
self.bm = wxBitmapFromImage( wxImage("mygif.gif" , wxBITMAP_TYPE_GIF) )
EVT_PAINT( self, self.OnPaint )
def OnPaint( self, event ):
dc = wxPaintDC( self )
dc.DrawBitmap( self.bm, 0, 0, False )
Code: Alles auswählen
from wxPython.wx import *
VERSION = '0'
class CMyFrame(wxFrame):
def __init__(self, parent, ID, title, pos=wxDefaultPosition,size=wxDefaultSize, style=wxDEFAULT_FRAME_STYLE):
wxFrame.__init__(self, parent, ID, title, pos, size, style)
panel = wxPanel(self,-1)
bmp = wxImage('osiris3.gif', wxBITMAP_TYPE_GIF ).ConvertToBitmap()
wxStaticBitmap(panel, -1,bmp, wxPoint(10, 10), wxSize(bmp.GetWidth(), bmp.GetHeight()))
# - class CMyFrame(wxFrame):----------------------------------------------------------------------------------
class CMyApp(wxApp):
def OnInit(self):
frame = CMyFrame(None, -1, VERSION)
frame.Show()
return true
# - class CMyApp(wxFrame):----------------------------------------------------------------------------------
if __name__ == '__main__':
app = CMyApp(0)
app.MainLoop()
Hallo Mylendjir
Du musst vorher noch wxInitAllImageHandlers() aufrufen. Dann klappt es...
Du musst vorher noch wxInitAllImageHandlers() aufrufen. Dann klappt es...
Code: Alles auswählen
class CMyApp(wxApp):
def OnInit(self):
wxInitAllImageHandlers()
frame = CMyFrame(None, -1, VERSION)
frame.Show()
return true
Animierte Gifs funktionieren afaik nicht automatisch. Du kannst im Konstruktor wxImage() als letztes Argument einen Index angeben um den zu ladenden Frame zu bestimmen.
wxImage_GetImageCount() soll eigentlich die Anzahl der Images zurückgeben, funktioniert bei mir aber nicht wirklich.
wxImage_GetImageCount() soll eigentlich die Anzahl der Images zurückgeben, funktioniert bei mir aber nicht wirklich.