0% found this document useful (0 votes)
336 views5 pages

Import Customtkinter As CTK

Python_code

Uploaded by

fanevaniorenana
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
336 views5 pages

Import Customtkinter As CTK

Python_code

Uploaded by

fanevaniorenana
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

import customtkinter as ctk

import tkinter as tk

import pandas as pd

from PIL import Image, ImageTk

import os

import webbrowser

import subprocess

# Lire les données depuis le fichier Excel

excel_path = 'E:/boss/VATOBE/pierres_precieuses.xlsx'

df = pd.read_excel(excel_path)

# Créer la fenêtre principale

root = ctk.CTk()

root.title("Bibliothèque des Pierres Précieuses")

root.geometry("1000x750")

# Créer un cadre pour afficher les informations

frame = ctk.CTkFrame(root, fg_color="#f5f5f5", corner_radius=15)

frame.grid(row=0, column=2, columnspan=3, padx=20, pady=20, sticky="nsew")

# Fonction pour afficher les informations d'une pierre

def afficher_pierre(pierre):

# Effacer les widgets existants dans le cadre

for widget in frame.winfo_children():

widget.destroy()

# Récupérer le nom, le chemin de la photo, le chemin du fichier txt et les coordonnées

nom = pierre['Nom']

photo_path = pierre['Photo']

txt_path = pierre['txt']
coordonnees = pierre['Coordonnées']

# Afficher le nom de la pierre

label_nom = ctk.CTkLabel(frame, text=nom, font=("Helvetica", 24, "bold"), text_color="#333333")

label_nom.grid(row=0, column=0, columnspan=2, pady=10)

# Afficher la photo de la pierre

if os.path.exists(photo_path):

img = Image.open(photo_path)

img = img.resize((250, 250), Image.LANCZOS)

photo = ImageTk.PhotoImage(img)

label_photo = ctk.CTkLabel(frame, image=photo)

label_photo.image = photo

label_photo.grid(row=1, column=0, pady=10, padx=10)

else:

label_photo = ctk.CTkLabel(frame, text="Photo non trouvée", font=("Arial", 14),


text_color="red")

label_photo.grid(row=1, column=0, pady=10, padx=10)

# Afficher le contenu du fichier .txt

if os.path.exists(txt_path):

try:

with open(txt_path, 'r', encoding='utf-8') as file:

text_content = file.read()

except UnicodeDecodeError:

with open(txt_path, 'r', encoding='latin-1') as file:

text_content = file.read()

text_box = tk.Text(frame, wrap='word', height=15, width=40, bg="#e8e8e8", fg="#333333",


font=("Helvetica", 14), padx=10, pady=10)

text_box.insert(tk.END, text_content)

text_box.grid(row=1, column=1, pady=10, padx=10)


text_box.configure(state='disabled') # Rendre le texte non modifiable

else:

label_txt = ctk.CTkLabel(frame, text="Fichier TXT non trouvé", font=("Arial", 14),


text_color="red")

label_txt.grid(row=1, column=1, pady=10, padx=10)

# Afficher les coordonnées avec un lien pour ouvrir dans Google Maps

def ouvrir_google_maps():

url = f"https://www.google.com/maps?q={coordonnees}"

webbrowser.open(url)

if pd.notna(coordonnees):

label_coordonnees = ctk.CTkLabel(frame, text="Coordonnées: " + coordonnees, font=("Arial",


14), text_color="#007acc", cursor="hand2")

label_coordonnees.grid(row=2, column=0, pady=10)

label_coordonnees.bind("<Button-1>", lambda e: ouvrir_google_maps())

else:

label_coordonnees = ctk.CTkLabel(frame, text="Coordonnées non disponibles", font=("Arial",


14), text_color="red")

label_coordonnees.grid(row=2, column=0, pady=10)

# Fonction pour rechercher et afficher une pierre

def rechercher_pierre():

nom_recherche = entry_recherche.get().strip().lower()

pierre = df[df['Nom'].str.lower() == nom_recherche]

if not pierre.empty:

afficher_pierre(pierre.iloc[0])

else:

for widget in frame.winfo_children():

widget.destroy()

label_erreur = ctk.CTkLabel(frame, text="Pierre non trouvée", font=("Arial", 14),


text_color="red")
label_erreur.grid(row=4, column=0, pady=10)

# Fonction pour ouvrir le fichier Excel

def ouvrir_excel():

subprocess.Popen(["start", excel_path], shell=True)

# Ajouter une Listbox pour sélectionner une pierre (Tkinter Listbox)

listbox = tk.Listbox(root, height=20, width=30, font=("Helvetica", 14), bg="#f0f0f0", fg="#333333")

listbox.grid(row=0, column=0, padx=10, pady=10, sticky="nsew")

# Ajouter les noms des pierres dans la Listbox

for pierre in df['Nom']:

listbox.insert("end", pierre)

# Fonction pour afficher les informations lorsque l'utilisateur sélectionne un nom dans la Listbox

def on_listbox_select(event):

selected_index = listbox.curselection() # Récupérer l'indice sélectionné

if selected_index:

selected_value = listbox.get(selected_index) # Récupérer la valeur sélectionnée

pierre = df[df['Nom'] == selected_value]

if not pierre.empty:

afficher_pierre(pierre.iloc[0])

# Lier la sélection de la Listbox à la fonction on_listbox_select

listbox.bind("<<ListboxSelect>>", on_listbox_select)

# Ajouter un champ de saisie pour la recherche

entry_recherche = ctk.CTkEntry(root, fg_color="#ffffff", text_color="black", corner_radius=10,


font=("Helvetica", 14))

entry_recherche.grid(row=2, column=0, pady=10, padx=10)


# Ajouter un bouton pour déclencher la recherche

bouton_recherche = ctk.CTkButton(root, text="Rechercher", command=rechercher_pierre,


fg_color="#007acc", text_color="white", corner_radius=10, font=("Helvetica", 14))

bouton_recherche.grid(row=2, column=1, pady=10, padx=10)

# Ajouter un bouton pour ouvrir le fichier Excel

bouton_ajouter = ctk.CTkButton(root, text="Ajouter", command=ouvrir_excel, fg_color="#007acc",


text_color="white", corner_radius=10, font=("Helvetica", 14))

bouton_ajouter.grid(row=3, column=0, pady=10, padx=10)

# Démarrer l'interface graphique

root.mainloop()

You might also like