wxPython - Abbruchbedingung für den Thread

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

Mittwoch 22. Oktober 2003, 13:41

Hallo zusammen!

Ich führe einen Requwest aus, der unregelmäßig lage dauert. Während diesem Request möchte ich einen animieten Dialog darstellen. Ds habe ich auch schon gemacht. Dieseer Dialog läuft in einem eigenen Thread. Jetzt möchte ich aber, das der Dialog sich nach "eintreffen" der Requestdaten beendet. Wie kbekomme ich das hin?

Hier ist der Code für den animierten Dialog.

Code: Alles auswählen

class PauseDlg(wxDialog):
    def __init__(self, parent, ID, title, pos=wxDefaultPosition, size=wxDefaultSize,style=wxDEFAULT_DIALOG_STYLE):
        wxDialog.__init__(self, parent, -1, 'Bitte warten.......',size=(350, 150), style = wxDEFAULT_DIALOG_STYLE)
        self.count = 0
        self.x=1
        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,status)) 
        
        b1 = wxButton(self, -1, 'Abbrechen', wxPoint(140, 70))
        b1.SetDefault()
        
        EVT_BUTTON(self, b1.GetId(), self.OnExit) # schliesst das Fenster
        
    def waitPicture(self,maxCountstatus):
        """ Wandert ein Gif Bild f�Bild durch | waitPicture(self, event) """
        print 'thread'  
        while 1:
            #~ self.x+=1
            #~ if self.x == 50:
                #~ self.OnExit('')
                #~ break
            #~ print self.x
            if status == 1:
                self.OnExit('')
                break
            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)
    
    def OnExit(self, event):
               self.Close(true)
Aufruf der Klasse:

Code: Alles auswählen

 sDlg = PauseDlg(None, -1, 'Bitte warten.......', size=wxSize(350, 200), style = wxDEFAULT_DIALOG_STYLE)

Die Codezeilen, in denen ich den Request starte usw.

Code: Alles auswählen

query = urllib.urlencode([(nodeName, val)])
                httpConnection = httplib.HTTPConnection(httpServer)
                httpConnection.request(httpMethod, httpPath+'?'+query)
                res = httpConnection.getresponse()

ICh hoffe ihr könnt mir weiterhelfen. :roll:
Antworten