Befehl wird nicht ausgeführt und kein Error :S

Fragen zu Tkinter.
Antworten
Astraioz

Hallo,

ich bräuchte nochmal eure Hilfe :)

Ich habe eine kleine Funktion im Netz gefunden wie ich via Python etwas herunterladen kann.

Das sieht so aus:

Code: Alles auswählen

def download_file( self, url, desc=None):
    try:
        u = urllib2.urlopen(url)

        scheme, netloc, path, query, fragment = urlparse.urlsplit(url)
        filename = os.path.basename(path)
        if not filename:
            filename = 'downloaded.file'
        if desc:
            filename = os.path.join(desc, filename)
        print filename
        with open(filename, 'wb') as f:
            meta = u.info()
            meta_func = meta.getheaders if hasattr(meta, 'getheaders') else meta.get_all
            meta_length = meta_func("Content-Length")
            file_size = None
            if meta_length:
                file_size = int(meta_length[0])
            print "Downloading: {0} Bytes: {1}".format(url, file_size)

            file_size_dl = 0
            block_sz = 8192
            while True:
                buffer = u.read(block_sz)
                if not buffer:
                    break

                file_size_dl += len(buffer)
                f.write(buffer)

                status = "{0:16}".format(file_size_dl)
                if file_size:
                    status += "   [{0:6.2f}%]".format(file_size_dl * 100 / file_size)
                status += chr(13)
                print status
                self.label_infotext.config(text=status) #############################################################
            print

        return filename
    except:
        Error = True
        return
Ich habe dort self.label_infotext.config(text=status) eingefügt, damit ich in meinem Fenster auch einen Fortschritt sehe (das Label an sich wurde vorher schon erstellt)

Leider rührt sich beim Starten garnichts. Es wird zwar runtergeladen aber das Label ändert sich kein bisschen und es kommen auch keine Fehler auf.

Ich bin fraglos :K

Gruß
Astraioz
BlackJack

@Astraioz: Erst mit einem nackten ``except:`` *alle* möglichen Ausnahmen unterdrücken und dann sagen es kommt kein Fehler. :roll:

Nimm das unsinnige ``try``/``except`` da raus.
Astraioz

@BlackJack: Ich glaube du hast meinen Beitrag nicht komplett gelesen ;). Es kommen auch ohne dem try und except keinerlei Fehlermeldungen.. der Text wird erst konfiguriert wenn er fertig runtergeladen hat und nicht nach jedem Durchgang..
Sirius3
User
Beiträge: 17745
Registriert: Sonntag 21. Oktober 2012, 17:20

@Astraioz: GUIs frieren normalerweise komplett ein, solange eine Funktion ausgeführt wird, da der Event-Loop nicht abgearbeitet werden kann. Deshalb gibt es auch kein Update des Labels.
Astraioz

Mhh kann man da irgendwie tricksen?
Antworten