wx PYthon - animiertes Gif im Thread laufen lassen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Hi und hallo alles zusammen,

Ich führe in meiner Applikation einen http Request Durch und möchte solange bis der Request läuft ein animiertes Gif anzeigen lassen. So wie das animiertes Gif beim Kopieren unter Windows.

Das muß aber meiner Meinung nach in einem eigenen Thread laufen. Nun habe ich mich noch nicht intensiv mit Thread beschäftigt. Hab zwar schon mal was versucht, das klappte aber nicht. Betimmt hat schon mal jemand so etwas gemacht und kann mir ein Paar Tips geben. Also wie gesagt, den animierten Dialog hab ich schon, nur das in einen Thread zu verpacken klappt noch nicht.

Merci schon mal im Voraus

2bock :lol:
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Für alle die es interessiert hier die "so glaube ich " Lösung.

Hier ein Codeausschnitt:

Code: Alles auswählen

self.count = 0
        maxCount = 11# Maximale Bilderanzahl im Gif
        gif = wxImage('.\images\wait.gif', wxBITMAP_TYPE_GIF,self.count).ConvertToBitmap() 
        self.myBitmap = wxStaticBitmap(self, -1, gif, wxPoint(20, 20), wxSize(70,70))
        thread.start_new_thread(self.waitPicture,(maxCount,)) 
        
        b1 = wxButton(self, -1, 'Abbrechen', wxPoint(140, 70))
        b1.SetDefault()
        
        EVT_BUTTON(self, b1.GetId(), self.OnExit) # schliesst das Fenster
        
    def waitPicture(self,maxCount):
        """ Wandert ein Gif Bild für Bild durch | waitPicture(self, event) """
        while 1:
            self.count += 1
            if self.count > maxCount:
                self.count -= maxCount
            gif =  wxImage('.\images\wait.gif', wxBITMAP_TYPE_GIF,self.count).ConvertToBitmap()
            self.myBitmap.SetBitmap(gif)
            wxUsleep(100)
Also wie man sieht reicht ein thread.start_new_thread(self.waitPicture,(maxCount,)) völlig aus.

Bis dann 8)
Antworten