Je crée souvent des écrans de dialogue de fichiers pendant le travail. Créez les éléments suivants à chaque fois.
Je l'ai classé afin qu'il puisse être facilement réutilisé comme mémoire. Voici le code source. Il inclut également l'héritage de classe (pour votre propre mémorandum).
import os
import csv
import tkinter as tk
from tkinter import filedialog
class Dialog_menu_screen(object):
def __init__(self,screen_title,screen_size,path_label,dialog_btn,start_btn):
self.screen_title = screen_title
self.screen_size = screen_size
self.path_label = path_label
self.dialog_btn = dialog_btn
self.start_btn = start_btn
#Affichage de l'écran principal
def show_main_screen(self):
root = tk.Tk()
root.title(self.screen_title)
root.geometry(self.screen_size)
#Création de widgets
#Vous pouvez lire une méthode avec un argument avec lambda.
path_label = tk.Label(root,text=self.path_label)
path_box = tk.Entry(root,width=45)
dialog_btn = tk.Button(root,text=self.dialog_btn,command=lambda:self.show_dialog(path_box))
start_btn = tk.Button(root,width=10,text=self.start_btn,command=lambda:self.execute_button(path_box.get()))
#Position du widget
path_box.grid(row=0,column=1,padx=10,pady=10)
dialog_btn.grid(row=0,column=2,padx=10,pady=10)
path_label.grid(row=0,column=0,padx=10,pady=10)
start_btn.grid(row=1,column=2,padx=10,pady=10)
root.mainloop()
#Afficher la boîte de dialogue de fichier
def show_dialog(self,path_box):
file_type = [('texte csv','*.csv')]
folder_place = 'C:\\pg'
file_path = filedialog.askopenfilename(filetypes = file_type, initialdir = folder_place)
#Si vous n'appuyez pas sur le bouton d'annulation
if len(file_path) > 0 :
path_box.delete(0,tk.END)
path_box.insert(tk.END,file_path)
#Afficher les données csv.
def execute_button(self,path_box):
except_list = []
with open(path_box,mode='r') as f:
read_file = csv.reader(f)
list_data = [row for row in read_file]
print(list_data)
return list_data
class Dialog_directory_screen(Dialog_menu_screen):
#Afficher la boîte de dialogue du dossier
def show_dialog(self,path_box):
folder_place = 'C:\\pg'
folder_path = filedialog.askdirectory(initialdir = folder_place)
#Si vous n'appuyez pas sur le bouton d'annulation
if len(folder_path) > 0 :
path_box.delete(0,tk.END)
path_box.insert(tk.END,folder_path)
def execute_button(self,path_box):
print(os.listdir(path_box))
if __name__ =="__main__":
screen_title = "lire csv"
screen_size = "500x90"
path_label = "Emplacement du fichier:"
dialog_btn = 'Emplacement du fichier...'
start_btn = 'Courir'
csv_instance = Dialog_menu_screen(screen_title,screen_size,path_label,dialog_btn,start_btn)
csv_instance.show_main_screen()
screen_title = "Parcourir le contenu du dossier"
directry_instance = Dialog_directory_screen(screen_title,screen_size,path_label,dialog_btn,start_btn)
directry_instance.show_main_screen()
c'est tout.
Recommended Posts