⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ boites de dialogue
tkinter.filedialog.askopenfile ( )
⇨ MENU ⇨ MODULES ⇨ tkinter ⇨ boites de dialogue
tkinter.filedialog.askopenfile ( )
DESCRIPTION.
Ouvre une boite de dialogue, proposant à l'utilisateur de sélectionner un fichier et retourne un objet fichier ouvert en mode lecture seule (mode = "r") correspondant à ce fichier.
SYNTAXE.
FIL_Fichier = tkinter.filedialog.askopenfile ( attribut1 = valeur , ... , attributn = valeur )
FIL_Fichier = ⇨ variable qui recevra l'objet fichier [ optionnel ]
tkinter.filedialog.askopenfile ( ) ⇨ appel de la méthode [ OBLIGATOIRE ]
attribut = valeur ⇨ attribut à modifier avec sa nouvelle valeur [ optionnel ]
LISTE DES ATTRIBUTS.
filetypes = collection
collection doit être une list ( ) composé de tuple ( ) contenant deux str ( ) : le premier élément décrit le type de fichier correspondant à l'extension ; le deuxième élément est un type d'extension. collection peut contenir autant de tuple ( ) que nécessaire. Une liste déroulante proposera de choisir un type de fichier. Seuls les fichiers ayant l'extension de ce type de fichier seront présentés dans la boite de dialogue. La navigation dans les répertoire n'est pas influencée par le choix d'extension. Par défaut, si filetypes est omis, tous les fichiers non cachés du répertoire sont visibles et sélectionnables.
initialdir = chemin
chemin doit être un str ( ) correspondant au chemin d'un répertoire valide qui sera sélectionné lors de l'ouverture de la boîte de dialogue. Si chemin n'existe pas, la boite de dialogue s'ouvrira sur le répertoire dont le nom est le plus proche possible de chemin ou du répertoire par défaut au moment de l'appel. Par défaut chemin est le répertoire de travail courant.
initialfile = chemin
chemin doit être un str ( ) correspondant au chemin d'un fichier qui sera présent dans la zone de saisie lors de l'ouverture de la boîte de dialogue. Si chemin n'existe pas il sera quand même affiché dans la zone de saisie. Si initialfile est absent aucun nom de fichier ne sera affiché dans la zone de saisie.
multiple = booleen
Si multiple = True l'utilisateur peut sélectionner plusieurs fichiers. Si multiple = False, valeur par défaut, L'utilisateur ne pourra sélectionner qu'un seul fichierà la fois. A noter que si plusieurs fichiers sont sélectionnés quand l'utilisateur validera son choix, Python lèvera une exception.
parent = contenant
Identification du contenant au dessus duquel sera affiché la boîte de dialogue, par défaut c'est la fenêtre principale créée avec la classe tkinter.Tk ( ).
title = chaine
chaine doit être un str ( ) quelconque mais valide. chaine apparaitra dans le bandeau situé en haut de la boite de dialogue. Par défaut chaine vaut "Ouvrir". Attention, la valeur de l'attribut title d'une fenêtre n'est pas son nom, ni son identifiant. On ne peut pas appeler la boite de dialogue en utilisant la valeur de l'attribut title pour l'identifier.
REMARQUES.
Si le fichier n"existe pas, il sera créé avec un contenu vide. La méthode tkinter.filedialog.askopenfile ( ) retourne un objet fichier ouvert en mode lecture seule (mode = "r") ou None si l'utilisateur a cliqué sur le bouton annuler pour fermer la boite de dialogue. Voir la méthode open ( ) pour plus de détails sur la lecture des enregistrements présents dans un fichier.
Une bonne pratique, et même la meilleure, et de toujours utiliser l'instruction with pour l'ouverture de fichier dans vos applications. En effet, l'emploi de with vous garantira une fermeture propre et correct du fichier, quelque soit la raison de la sortie du bloc initié par with, même si votre application a levé une exception, gérée ou non, durant l'ouverture d'un fichier. Il est donc conseillé d'utiliser la méthode tkinter.filedialog.askopenfile ( ) comme ceci :
with tkinter.filedialog.askopenfile ( ) as FIL_Fichier :
# --- Traitement de contenu du fichier ---
...
...
La méthode tkinter.filedialog.askopenfile ( ) n'est pas native du module tkinter, il faut donc commencer par importer le module tkinter.filedialog pour pouvoir utiliser cette méthode. Voir import pour plus de détails sur l'incorporation de modules, classes et méthodes non built-in dans un script.
Bien que cela soit fortement déconseiller, il n'est pas nécessaire d'importer le module le module tkinter avant le module tkinter.filedialog. En effet le module tkinter sera automatiquement importé avec le module tkinter.filedialog. De même il n'est pas utile de créer une instance de la classe Load ( ) pour appeler la méthode tkinter.filedialog.askopenfile ( ).
import tkinter.filedialog
print ( tkinter.filedialog.askopenfile ( ) )
EXEMPLE.
import tkinter
import tkinter.filedialog
def FNC_Selection ( ) :
try :
kypes = [ ( "Fichier texte" , ".txt" ) , ( "Script python" , ".py" ) , ( "Autres types" , ".*" ) ]
with tkinter.filedialog.askopenfile ( filetypes = kypes ) as FIL_Fichier :
TXT_Editeur.delete ( "1.0" , "end" )
TXT_Editeur.insert ( "end" , FIL_Fichier.read ( ) )
TXT_Editeur.insert ( "1.0" , "Vous avez ouvert :\n" )
TXT_Editeur.insert ( "2.0" , f"{ FIL_Fichier }\n\n" )
except : pass
TKI_Principal = tkinter.Tk ( )
TXT_Editeur = tkinter.Text ( TKI_Principal , wrap = "word" , width = 40 , height = 10 )
TXT_Editeur.pack ( )
tkinter.Button ( TKI_Principal , text = "Sélectionner ... " , command = FNC_Selection ).pack ( )
tkinter.Button ( TKI_Principal , text = "Quitter" , command = TKI_Principal.destroy ).pack ( )
TKI_Principal.mainloop ( )
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de