i kolejny kod
import tkinter as tk
from tkinter import filedialog
def load_file():
filename = filedialog.askopenfilename()
with open(filename, 'r', encoding='utf-8') as file:
text_entry.delete(1.0, tk.END)
text_entry.insert(tk.END, file.read())
def save_file(text_to_save):
filename = filedialog.asksaveasfilename(defaultextension=".txt")
with open(filename, 'w', encoding='utf-8') as file:
file.write(text_to_save)
def process_text():
text = text_entry.get(1.0, tk.END).strip()
key = key_entry.get().strip().lower()
mode = mode_var.get()
if not text:
result_label.config(text="Wprowadź tekst do przetworzenia!")
return
if not key:
result_label.config(text="Wprowadź klucz!")
return
alphabet = "aąbcćdeęfghijklłmnńopqrsśtuóvwxyzźż"
result = ""
not_used = 0
key_len = len(key)
for i, char in enumerate(text.lower()):
if char in alphabet:
col = alphabet.find(key[(i - not_used) % key_len])
distance = 0
if mode == 's':
distance = alphabet.find(char) + col
elif mode == 'o':
distance = alphabet.find(char) - col
result += alphabet[distance % len(alphabet)]
else:
result += char
not_used += 1
result_label.config(text=result)
save_file(result)
# Tworzenie głównego okna
root = tk.Tk()
root.title("Szyfr Vigenère'a")
# Ramka dla przycisku i pola tekstowego
frame = tk.Frame(root)
frame.pack(padx=10, pady=10)
# Pole tekstowe do wyświetlania tekstu z pliku
text_entry = tk.Text(frame, height=10, width=50)
text_entry.grid(row=0, column=0, padx=5, pady=5)
# Przycisk do wybierania pliku
file_button = tk.Button(frame, text="Wybierz plik", command=load_file)
file_button.grid(row=0, column=1, padx=5, pady=5)
# Etykieta i pole do wprowadzenia klucza
key_label = tk.Label(frame, text="Klucz:")
key_label.grid(row=1, column=0, padx=5, pady=5, sticky="w")
key_entry = tk.Entry(frame)
key_entry.grid(row=1, column=1, padx=5, pady=5, sticky="ew")
# Przyciski do wyboru trybu działania
mode_label = tk.Label(frame, text="Tryb:")
mode_label.grid(row=2, column=0, padx=5, pady=5, sticky="w")
mode_var = tk.StringVar()
mode_var.set("s") # Domyślnie szyfrowanie
encrypt_radio = tk.Radiobutton(frame, text="Szyfrowanie", variable=mode_var, value="s")
encrypt_radio.grid(row=2, column=1, padx=5, pady=5, sticky="w")
decrypt_radio = tk.Radiobutton(frame, text="Odszyfrowanie", variable=mode_var, value="o")
decrypt_radio.grid(row=3, column=1, padx=5, pady=5, sticky="w")
# Przycisk do przetwarzania tekstu
process_button = tk.Button(frame, text="Przetwórz", command=process_text)
process_button.grid(row=4, column=0, columnspan=2, padx=5, pady=5)
# Etykieta do wyświetlania wyniku
result_label = tk.Label(root, text="", wraplength=400)
result_label.pack(padx=10, pady=10)
root.mainloop()