tkinter et filedialog en Python 3.3
Bonsoir,
Pour mon 1er programme (code ci-dessous), j'ai utilisé des exemples recueillis sur internet et dans le livre "Python 3".
Je suis sous windows XP et espère utiliser le prg sous Debian et sous Ubuntu.
Sous IDLE, le prg fonctionne. Lancé en direct, il indique pour filedialog : "Attribure Error : 'module' objects has no attribute 'filedialog'.
Après une après-midi de recherches, j'ai trouve la commande 'dir' pour lister les attributs de tkinter. En effet, filedialog n'y figure pas.
Donc, deux questions :
1 - Pourquoi IDLE installé automatiquement par python 3.3 accepte l'exécution du prg alors qu'il plante en direct, SVP?
2 - Quelle est l'attribut de tkinter qu'il faut utiliser? Je n'ai pas trouver.
Merci d'avance pour votre aide
Bonne soirée
Luc
Prg :
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| ####################################################################################
# Programme Python 3 #
# Liste fichiers.py #
# Nombre et cumul taille des fichiers dans un répertoire défini (par dossier) #
####################################################################################
# Pour un répertoire donné, le prg liste les dossiers et sous-dossiers
# en indiquant, pour chacun, le nombre de fichiers contenus et leurs tailles cumulées
#
# Un dernier affichage donne, pour le répertoire indiqué
# - le nombre total de fichiers
# - le cumul des tailles des fichiers
# - le nombre total de dossiers (y compris la racine si des fichiers ne sont pas dans des dossiers)
################################
# Importation des modules
import os
import tkinter
################################
# Définition locale des fonctions
def choixrepertoire(): # Sélection du répertoire
global rep
print ("demande rep")
rep = tkinter.filedialog.askdirectory(initialdir="/", title='Choisissez un repertoire')
if len(rep) > 0:
print ("vous avez choisi le repertoire : "+(rep))
traitementRepertoire(rep)
return
def traitementRepertoire(path): # Traitement du répertoire
repertoire = "***" # Initialisation des variables
nombrerepertoire = 0
taillerepertoire = 0
nombredossiers = 0
sousRepertoire = "***"
nombre = 0
taille = 0
for root, dirs, files in os.walk(path): # Boucle pour parcourir l'arborescence
if sousRepertoire != root : # Changement de dossier
if sousRepertoire !="***":
nombredossiers = nombredossiers + 1
print (" ***** Pour le dossier "+(sousRepertoire)+" Nombre "+str(nombre)+" taille : "+str(taille))
print (" ")
sousRepertoire = root
nombre = 0
taille = 0
for i in files: # Traitement des fichiers
nombre = nombre + 1
taillefichier = os.path.getsize(os.path.join(root, i))
taille = taille + taillefichier
taillerepertoire = taillerepertoire + taillefichier
nombrerepertoire = nombrerepertoire + 1
nombredossiers = nombredossiers + 1 # Fin, donc édition des derniers éléments
print (" ***** Pour le dossier : "+(sousRepertoire)+" nombre : "+str(nombre)+" taille : "+str(taille))
print (" ")
print ("======= Pour le répertoire "+(path))
print (" Nombre : "+str(nombrerepertoire))
print (" Taille : "+str(taillerepertoire))
print (" Nb dossiers : "+str(nombredossiers))
print (" ")
print ("TERMINE ******")
return
################################
# Corps principal du programme
fen1 = tkinter.Tk()
tex1 = tkinter.Label(fen1, text='Répertoire des sources')
tex1.pack()
rep =''
btnchoixrep = tkinter.Button(fen1, text='Choississez le répertoire SVP', command = choixrepertoire)
btnchoixrep.pack()
btnquitter = tkinter.Button(fen1, text='Quitter', command = fen1.destroy)
btnquitter.pack()
fen1.mainloop() |