ztxi / app.py
Geek7's picture
Update app.py
57f037b verified
raw
history blame
1.32 kB
import tkinter as tk
from tkinter import filedialog, messagebox, ttk
import zipfile
import os
import threading
def extract_zip():
zip_file = filedialog.askopenfilename(filetypes=[("ZIP Files", "*.zip")])
if not zip_file:
return
extract_to = filedialog.askdirectory(title="Select Extract Folder")
if not extract_to:
return
progress["value"] = 0 # Reset progress bar
threading.Thread(target=extract_zip_thread, args=(zip_file, extract_to)).start()
def extract_zip_thread(zip_file, extract_to):
try:
with zipfile.ZipFile(zip_file, 'r') as zip_ref:
files = zip_ref.namelist()
total_files = len(files)
for i, file in enumerate(files):
zip_ref.extract(file, extract_to)
progress["value"] = ((i + 1) / total_files) * 100
root.update_idletasks()
messagebox.showinfo("Success", f"βœ… Extracted to: {extract_to}")
except Exception as e:
messagebox.showerror("Error", f"❌ Error: {e}")
# GUI Setup
root = tk.Tk()
root.title("ZIP Extractor")
button = tk.Button(root, text="Select ZIP & Extract", command=extract_zip)
button.pack(pady=10)
progress = ttk.Progressbar(root, orient="horizontal", length=300, mode="determinate")
progress.pack(pady=10)
root.mainloop()