Bonjour,
J'aimerais pouvoir afficher l'avancement du téléchargement d'un fichier par FTP en utilisant une fenêtre tkinter.
Le problème est que, après quelques recherches, j'ai remarqué que pour faire cela il fallait probablement utiliser le threading. Or, vu mon niveau en python, je ne comprends absolument pas son fonctionnement. J'ai trouvé quelques partie de code pouvant probablement être modifié pour faire cela, en prenant ce code :
J'aimerais introduire le mien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 from threading import Thread from time import sleep from tkinter import Button, Label, Tk class App(Tk): def __init__(self): Tk.__init__(self) self.label = Label(self, text="Stopped.") self.label.pack() self.play_button = Button(self, text="Play", command=self.download) self.play_button.pack(side="left", padx=2, pady=2) self.stop_button = Button(self, text="Stop", command=self.stop) self.stop_button.pack(side="left", padx=2, pady=2) self._thread, self._pause, self._stop = None, False, True def action(self): for i in range(1000): if self._stop: break while self._pause: self.label["text"] = "Pause... (count: {})".format(i) sleep(0.1) self.label["text"] = "Playing... (count: {})".format(i) sleep(0.1) self.label["text"] = "Stopped." def download(self): if self._thread is None: self._stop = False self._thread = Thread(target=self.action) self._thread.start() self._pause = False self.play_button.configure(text="Pause", command=self.pause) def pause(self): self._pause = True self.play_button.configure(text="Play", command=self.play) def stop(self): if self._thread is not None: self._thread, self._pause, self._stop = None, False, True self.play_button.configure(text="Play", command=self.play) App().mainloop()
Ou si cela n'est pas possible trouver une autre solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 from ftplib import FTP def connect(): global ftp ftp = FTP('url') ftp.login(user='username', passwd='pass') def downloadMaj(): global sizeWritten,temp def write(block): global sizeWritten, temp localsetup.write(block) sizeWritten += len(block) percentComplete = int((sizeWritten / totalSize)*100) if percentComplete != temp: print(percentComplete, " %") temp = percentComplete connect() setupFile = 'setup.exe' totalSize = ftp.size(setupFile) sizeWritten = 0 temp = -1 localsetup = open(setupFile, 'wb') ftp.retrbinary('RETR '+setupFile, write) ftp.quit() localsetup.close()
Merci d'avance
Partager