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
|
import tkinter as tk
from tkinter import ttk
from tkinterdnd2 import TkinterDnD, DND_FILES
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from scipy.interpolate import griddata
class DatFileApp(TkinterDnD.Tk):
def __init__(self):
super().__init__()
self.title("Analyse de fichiers .dat")
self.state('zoomed') # Maximiser la fenêtre au lancement
# Créer les zones
self.frame()
self.file_path = None # Initialiser le chemin du fichier
def frame(self):
# Créer la frame principale (main) qui occupe le reste de l'écran
self.main_frame = tk.Frame(self)
self.main_frame.grid(row=1, column=0, sticky="nsew", padx=20, pady=20)
self.grid_columnconfigure(0, weight=1) # La colonne 0 prend tout l'espace horizontal disponible
# Configurer les colonnes dans la frame principale
self.main_frame.grid_columnconfigure(0, weight=1)
self.main_frame.grid_columnconfigure(1, weight=2)
# Créer les frames à l'intérieur de la frame main en utilisant LabelFrame
self.data_frame = tk.Frame(self.main_frame)
self.data_frame.grid(row=0, column=0, sticky="nsew", padx=(0, 10)) # Ajouter un espace à droite
self.graph_frame = tk.LabelFrame(self.main_frame, text="Graphiques", labelanchor="n", padx=10, borderwidth=2, relief="solid")
self.graph_frame.grid(row=0, column=1, sticky="nsew")
# Configurer les lignes et colonnes pour s'étendre dans main_frame
self.main_frame.grid_rowconfigure(0, weight=1)
self.main_frame.grid_columnconfigure(0, weight=1)
self.main_frame.grid_columnconfigure(1, weight=2)
# Zone pour les onglets des graphiques
self.tabs_frame = tk.LabelFrame(self.main_frame)
self.tabs_frame.grid(row=0, column=1, padx=10, pady=20, sticky="nsew")
# Ajustements pour data_frame
self.data_frame.grid_rowconfigure(0, weight=1) # Première ligne de data_frame s'étend
self.data_frame.grid_rowconfigure(1, weight=1) # Deuxième ligne de data_frame s'étend
self.data_frame.grid_columnconfigure(0, weight=1) # Colonne de data_frame s'étend
# Ajustements pour tabs_frame
self.tabs_frame.grid_rowconfigure(0, weight=1) # Onglets s'étendent verticalement
self.tabs_frame.grid_columnconfigure(0, weight=1) # Onglets s'étendent horizontalement
# Créer les frames à l'intérieur de la frame data_frame en utilisant LabelFrame
self.metadata_frame = tk.LabelFrame(self.data_frame, text="Métadonnées", labelanchor="n", padx=10, pady=10, borderwidth=2, relief="solid")
self.metadata_frame.grid(row=0, column=0, sticky="nsew")
self.statistics_frame = tk.LabelFrame(self.data_frame, text="Statistiques", labelanchor="n", padx=10, pady=10, borderwidth=2, relief="solid")
self.statistics_frame.grid(row=1, column=0, sticky="nsew")
# Zone pour les métadonnées
self.metadata_text_widget = tk.Text(self.metadata_frame, wrap='word', height=10)
####self.metadata_text_widget.grid(sticky="nsew")
self.metadata_text_widget.config(state=tk.DISABLED)
# Zone pour le tableau des statistiques
self.stats_tree = ttk.Treeview(self.statistics_frame, columns=["Stat", "Value"], show="headings")
self.stats_tree.heading("Stat", text="Statistique")
self.stats_tree.heading("Value", text="Valeur")
####self.stats_tree.grid(sticky="nsew")
# Configurer le redimensionnement dans metadata_frame et statistics_frame
self.metadata_frame.grid_rowconfigure(0, weight=1) # Le widget texte occupe tout l'espace vertical
self.metadata_frame.grid_columnconfigure(0, weight=1) # Le widget texte occupe tout l'espace horizontal
self.statistics_frame.grid_rowconfigure(0, weight=1) # Le tableau occupe tout l'espace vertical
self.statistics_frame.grid_columnconfigure(0, weight=1) # Le tableau occupe tout l'espace horizontal
if __name__ == "__main__":
app = DatFileApp()
app.mainloop() |
Partager