Vous êtes sur la page 1sur 2

import tkinter as tk

from tkinter import ttk


from tkinter import filedialog

def chiffrer(carac, n):


if 'A' <= carac <= 'Z':
num_carac = ord(carac) - ord('A')
nouveau_num_carac = (num_carac + n) % 26
nouveau_carac = chr(nouveau_num_carac + ord('A'))
return nouveau_carac
else:
return carac

def CodeCesar(texte, n):


texte_majuscule = ''.join(majuscule(carac) for carac in texte)
texte_chiffre = ''.join(chiffrer(carac, n) for carac in texte_majuscule)
return texte_chiffre

def majuscule(texte):
if 'a' <= texte <= 'z':
return chr(ord(texte) - ord('a') + ord('A'))
else:
return texte

def on_submit():
chemin_fichier = entry_chemin_fichier.get()
decalage = int(entry_decalage.get())
choix_operation = choix.get()

with open(chemin_fichier, 'r') as fichier:


texte = fichier.read()

if choix_operation == "Coder":
texte_resultat = CodeCesar(texte, decalage)
elif choix_operation == "Decoder":
texte_resultat = CodeCesar(texte, -decalage)

chemin_sortie = chemin_fichier.replace(".txt",
f"_{choix_operation}_{decalage}.txt")

with open(chemin_sortie, 'w') as fichier_sortie:


fichier_sortie.write(texte_resultat)

label_resultat.config(text=f"Le fichier a été {choix_operation.lower()} et


enregistré à {chemin_sortie}")

def parcourir():
chemin_fichier = filedialog.askopenfilename(filetypes=[("Fichiers texte",
"*.txt")])
entry_chemin_fichier.delete(0, tk.END)
entry_chemin_fichier.insert(0, chemin_fichier)

# Création de la fenêtre principale


fenetre = tk.Tk()
fenetre.title("Codage / Décodage César - Fichier")

# Création des widgets


label_chemin_fichier = tk.Label(fenetre, text="Chemin du fichier:")
entry_chemin_fichier = tk.Entry(fenetre, width=30)
btn_parcourir = tk.Button(fenetre, text="Parcourir", command=parcourir)

label_choix = tk.Label(fenetre, text="Choix:")


choix = ttk.Combobox(fenetre, values=["Coder", "Decoder"])
choix.set("Coder")

label_decalage = tk.Label(fenetre, text="Décalage:")


entry_decalage = tk.Entry(fenetre, width=5)

btn_submit = tk.Button(fenetre, text="Valider", command=on_submit)

label_resultat = tk.Label(fenetre, text="Résultat:")

# Placement des widgets dans la fenêtre en utilisant pack


label_chemin_fichier.pack(padx=5, pady=5)
entry_chemin_fichier.pack(padx=5, pady=5)
btn_parcourir.pack(pady=5)
label_choix.pack(padx=5, pady=5)
choix.pack(padx=5, pady=5)
label_decalage.pack(padx=5, pady=5)
entry_decalage.pack(padx=5, pady=5)
btn_submit.pack(pady=10)
label_resultat.pack(padx=5, pady=5)

# Lancement de la boucle principale


fenetre.mainloop()

Vous aimerez peut-être aussi