also es wird in einem thread ein download durchgeführt und dann eine funktion gestarten, um zu gucken, ob noch mehr Downloads in der Liste stehen. Aber wenn kein Download mehr drin steht, hängt dich das Programm einfach auf. ich denke, dass es was mit dem thread zu tun hat.
Code: Alles auswählen
def startdownload():
listboxdls = listbox.curselection()
if len(listboxdls) != 0:
downloaddata = files[int(listboxdls[0])]
thread.start_new_thread(downloadfile,(downloaddata,))
else:
root.destroy()
def handleDownload(block):
global file, filesize
file.write(block)
statusanzeige.set(('Status: %s/%s')%(str(file.tell()),str(filesize)))
def downloadfile(downloaddata):
global file, filesize
try:
ftp = FTP()
ftp.connect(host=downloaddata[0], port=int(portdata))
statusanzeige.set('Status: connected')
ftp.login(logindata, pwdata)
statusanzeige.set('Status: logged in')
ftp.cwd(downloaddata[1])
statusanzeige.set('Status: path ok')
filesize = ftp.size(downloaddata[2])
statusanzeige.set('Status: get filesize')
file = open(savepath+downloaddata[2], 'wb')
statusanzeige.set('Status: start download')
ftp.retrbinary('RETR ' + downloaddata[2], handleDownload)
ftp.close()
statusanzeige.set('Status: disconnected')
file.close()
listboxdls = listbox.curselection()
listbox.selection_clear(int(listboxdls[0]))
except:
tkMessageBox.showwarning(title='Error!', message='Server ist down, voll oder die Files wurden deleted.')
listboxdls = listbox.curselection()
listbox.selection_clear(int(listboxdls[0]))
startdownload()