Ceci est un mémo de la procédure d'utilisation de la boîte de dialogue de fichier avec tkinter.
Vous pouvez utiliser tkinter.filedialog.askdirectory pour ouvrir une boîte de dialogue de sélection de dossier. Spécifiez le répertoire initial avec initialdir.
python
import tkinter.filedialog
iDir = os.path.abspath(os.path.dirname(__file__))
folder_name = tkinter.filedialog.askdirectory(initialdir=iDir)
Ouvrez la boîte de dialogue de fichier avec tkinter.filedialog.askopenfilename. Spécifiez le modèle des fichiers candidats avec les types de fichiers et spécifiez le répertoire à ouvrir en premier avec initialdir. Pour sélectionner plusieurs fichiers, utilisez tkinter.filedialog.askopenfilenames.
python
import tkinter.filedialog
fTyp = [("", "*")]
iDir = os.path.abspath(os.path.dirname(__file__))
file_name = tkinter.filedialog.askopenfilename(filetypes=fTyp, initialdir=iDir)
Vous pouvez spécifier l'extension de fichier. Donnez dans l'ordre du titre et du motif.
python
fTyp = [("fichier de données", "*.csv;*.xlsx;*.xls")]
Vous pouvez également sélectionner par correspondance partielle du nom de fichier.
python
fTyp = [("fichier journal", "log*")]
Lorsque vous l'utilisez, je pense qu'il est préférable de l'utiliser comme ça.
python
import os
import tkinter as tk
import tkinter.filedialog
class TkinterClass:
def __init__(self):
root = tk.Tk()
root.geometry("500x350")
button = tk.Button(root, text='Boîte de dialogue Ouvrir un fichier', font=('', 20),
width=24, height=1, bg='#999999', activebackground="#aaaaaa")
button.bind('<ButtonPress>', self.file_dialog)
button.pack(pady=40)
self.file_name = tk.StringVar()
self.file_name.set('Non séléctionné')
label = tk.Label(textvariable=self.file_name, font=('', 12))
label.pack(pady=0)
button = tk.Button(root, text='Boîte de dialogue Ouvrir un dossier', font=('', 20),
width=24, height=1, bg='#999999', activebackground="#aaaaaa")
button.bind('<ButtonPress>', self.folder_dialog)
button.pack(pady=40)
self.folder_name = tk.StringVar()
self.folder_name.set('Non séléctionné')
label = tk.Label(textvariable=self.folder_name, font=('', 12))
label.pack(pady=10)
root.mainloop()
def file_dialog(self, event):
fTyp = [("", "*")]
iDir = os.path.abspath(os.path.dirname(__file__))
file_name = tk.filedialog.askopenfilename(filetypes=fTyp, initialdir=iDir)
if len(file_name) == 0:
self.file_name.set('Sélection annulée')
else:
self.file_name.set(file_name)
def folder_dialog(self, event):
iDir = os.path.abspath(os.path.dirname(__file__))
folder_name = tk.filedialog.askdirectory(initialdir=iDir)
if len(folder_name) == 0:
self.folder_name.set('Sélection annulée')
else:
self.folder_name.set(folder_name)
if __name__ == '__main__':
TkinterClass()
Essayons
Fonctionne bien à l'importation
import tkinter as tk
import tkinter.filedialog
tk.filedialog.askdirectory(initialdir=iDir)
Importation qui ne fonctionne pas
import tkinter as tk
tk.filedialog.askdirectory(initialdir=iDir)
Pourquoi! ??
Recommended Posts