changer le conenu du widget Label pendant exécution de fonction
Salut à tous les pythoniein,
Bon moi autant vous le dire tous de suite, je suis pas doué en prog, mais là j'ai pas le choix, faut que j'y arrive :bug:
Bon voilà en m'inspirant du code trouvé ici pour télécharger l'arbo d'un dossier par FTP, j'ai pour but de le transformer en interface graphique, pour que l'utilisateur entre son login et mot de passe FTP et que ensuite celà télécharge automatiquement d'un point préci vers un autre.
Celà fonctionne sauf que dans ma pitite téte de programmeur du dimanche, je veux que dans le widget Label s'affiche de façon dynamique le fichier en cours de copie.
voici mon code enfin presque :
Code:
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 49 50 51 52 53 54 55
| # -*- coding: Latin-1 -*-
import os
import ftplib
from Tkinter import *
global textv
textv='coucou'
def download():
pathsrc='./programmation'
pathdst='F:\\programmation\\python\\ftp\\telechargement'
ftp=ftplib.FTP('')
ftp.connect('192.168.1.2')
user=str(entr1.get())
passwd=str(entr2.get())
ftp.login(user,passwd)
lenpathsrc=len(pathsrc)
def _download(pathsrc):
l=ftp.nlst(pathsrc)
for i in l:
try:
ftp.size(i)
textv=i
progress.configure(text=textv)
ftp.retrbinary('RETR '+i, open(pathdst+os.sep+i[lenpathsrc:], 'wb').write)
except:
try: os.makedirs(pathdst+os.sep+os.path.dirname(i[lenpathsrc:]))
except: pass
_download(i)
_download(pathsrc)
ftp.quit()
progress.configure(text='Opération terminée...')
#######################
# interface graphique #
#######################
fen1=Tk()
txt1=Label(fen1, text=' Login :')
txt2=Label(fen1, text='Mot de passe :')
entr1=Entry(fen1)
entr2=Entry(fen1)
bout1=Button(fen1,text='telecharger',command=download)
bout2=Button(fen1,text='Quiter',command=fen1.destroy)
progress=Label(fen1,text=textv,width="50")
txt1.grid(row=0,column=0)
txt2.grid(row=1,column=0)
entr1.grid(row=0,column=1)
entr2.grid(row=1,column=1)
bout1.grid(row=2,column=0)
bout2.grid(row=2,column=1)
progress.grid(row=3,column=0)
fen1.mainloop() |
Le problème est le suivant si la ligne juste avant :
Code:
progress.configure(text=textv)
je rajoute
print textv, celà fonctionne mon widget Label change de manière dynamique mais s'affiche aussi sous console ce qui est normal.
Moi je veux juste que celà s'affiche dans le Widget, mais si j'enlève la commande print le Widget Label ne change pas sauf à la fin de la fonction pour affiché opération terminé.
J'ai beau chercher je ne voix vraiment pas .
Si quelqu'un peut m'aider merci d'avance