import os import glob from tkinter import * #from tkinter.scrolledtext import ScrolledText from tkinter import filedialog from refractivesqlite import dboperations as DB # end def def remplir_liste (dossier): """ remplit la liste de fichiers à partir de l'emplacement @dossier fourni en paramètre de fonction; """ # init globales global dossier_actuel # on conserve le dossier en cours de traitement dossier_actuel = dossier # on récupère la liste des fichiers _liste_fichiers = glob.glob(normaliser(dossier, motif_fichiers)) # on met à jour la listbox à travers la variable de contrôle cvar_fichiers.set(" ".join(map(os.path.basename, _liste_fichiers))) def normaliser (chemin, *args): "met un chemin de fichier en conformité avec l'OS utilisé" return os.path.normpath(os.path.join(chemin, *args)) # end def def afficher_fichier (event): "affiche le contenu du dossier sélectionné" # on récupère le nom du fichier fichier = glob.glob(normaliser( dossier_actuel, liste_fichiers.get(liste_fichiers.curselection() or 0), motif_fichiers ) ) # on l'affiche cvar1_fichiers.set(" ".join(map(os.path.basename, fichier))) #on enlève l'extension listFile = [] rep = r"/Users/clement/Documents/python/database/main" for i in os.listdir(os.path.join(rep, liste_fichiers.curselection())): listFile.append(i.split('.yml')[0]) # print (liste_fichiers.get(liste_fichiers.curselection())) # dossier = liste_fichiers.get(liste_fichiers.curselection()) # est-ce réellement un fichier ? def ecriture (truc): #mat = db.get_material(5) #shelf = 'main' #dossier = 'Ag' #fichier = liste_fichiers1.get(liste_fichiers1.curselection()) #fichier = 'Babar' #Without the .yml! #db.search_custom('select pageid from pages where shelf="{}" and book="{}" and page LIKE "%{}%"'.format(shelf,dossier,fichier)) machin = liste_fichiers1.get(liste_fichiers1.curselection()) print (machin) # init variables globales dossier_actuel = "" motif_fichiers = "*" # on commence par établir l'interface graphique (GUI) # on crée la fenêtre principale fenetre = Tk() fenetre.title("Calcul de réflectivité") # on crée un conteneur pour la gestion des fichiers conteneur_fichiers = Frame(fenetre) # on rend le conteneur redimensionnable conteneur_fichiers.columnconfigure(0, weight=1) conteneur_fichiers.rowconfigure(1, weight=1) # on crée une étiquette texte dans ce conteneur Label( conteneur_fichiers, text="Veuillez sélectionner un dossier :" ).grid(row=0, column=0, sticky=EW) # on crée la liste des fichiers cvar_fichiers = StringVar() liste_fichiers = Listbox(conteneur_fichiers, listvariable=cvar_fichiers) liste_fichiers.grid(row=1, column=0, sticky=NS+EW) # avec sa scrollbar vbar_fichiers = Scrollbar(conteneur_fichiers, orient=VERTICAL) vbar_fichiers.grid(row=1, column=1, sticky=NS+W) # on connecte la scrollbar à la liste des fichiers liste_fichiers.configure(yscrollcommand=vbar_fichiers.set) vbar_fichiers.configure(command=liste_fichiers.yview) # on va gérer l'affichage des recettes sur simple clic # sur un fichier de la liste liste_fichiers.bind("", afficher_fichier) #liste_fichiers.bind("", liste_fichiers.curselection()) # on place le conteneur dans la fenêtre principale # avec des marges padx et pady conteneur_fichiers.grid(row=0, column=0, sticky=NS+EW, padx=5, pady=5) # on crée un conteneur pour l'affichage conteneur_affichage = Frame(fenetre) # on rend le conteneur redimensionnable conteneur_affichage.columnconfigure(0, weight=1) conteneur_affichage.rowconfigure(1, weight=1) # on crée une étiquette texte dans ce conteneur Label( conteneur_affichage, text="Veuillez sélectionner un fichier :" ).grid(row=0, column=0, sticky=EW) # on crée la liste des fichiers cvar1_fichiers = StringVar() liste_fichiers1 = Listbox(conteneur_affichage, listvariable=cvar1_fichiers) liste_fichiers1.grid(row=1, column=0, sticky=NS+EW) # avec sa scrollbar vbar1_fichiers = Scrollbar(conteneur_affichage, orient=VERTICAL) vbar1_fichiers.grid(row=1, column=1, sticky=NS+W) # on connecte la scrollbar à la liste des fichiers liste_fichiers1.configure(yscrollcommand=vbar1_fichiers.set) vbar1_fichiers.configure(command=liste_fichiers1.yview) liste_fichiers1.bind("", ecriture) conteneur_affichage.grid(row=0, column=1, sticky=NS+EW, padx=5, pady=5) # on rend la fenêtre redimensionnable fenetre.rowconfigure(0, weight=1) fenetre.columnconfigure(1, weight=1) # pour démarrer avec un dossier par défaut, #remplir_liste("/Users/clement/Documents/python/database/main/Ag") remplir_liste("/Users/clement/Documents/python/database/data/main") fenetre.mainloop()