Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import shutil
- import time
- import sys
- import threading
- from tkinter import Tk, filedialog, messagebox, Label, Button
- from tkinter.ttk import Progressbar
- def center_window(window, width=400, height=150):
- """ Centraliza a janela na tela. """
- screen_width = window.winfo_screenwidth()
- screen_height = window.winfo_screenheight()
- x = (screen_width / 2) - (width / 2)
- y = (screen_height / 2) - (height / 2)
- window.geometry('%dx%d+%d+%d' % (width, height, x, y))
- def show_alert():
- """ Exibe um alerta informando sobre a movimentação e exclusão dos arquivos. """
- confirmation = messagebox.askokcancel("Atenção!", "Os arquivos serão movidos e os originais serão deletados. "
- "Clique em OK para continuar ou Cancelar para sair.")
- return confirmation
- def select_files():
- """ Abre um diálogo para selecionar arquivos. """
- root = Tk()
- root.withdraw() # Evita que a janela root do Tkinter seja exibida
- file_paths = filedialog.askopenfilenames(title="Selecione os arquivos")
- root.destroy()
- return file_paths
- def select_destination():
- """ Abre um diálogo para selecionar o diretório de destino. """
- root = Tk()
- root.withdraw() # Evita que a janela root do Tkinter seja exibida
- dest_directory = filedialog.askdirectory(title="Selecione o diretório de destino")
- root.destroy()
- return dest_directory
- def move_files_thread(files, destination, label, progress_bar):
- """ Função para ser executada em uma thread para mover os arquivos. """
- total_files = len(files)
- for index, file in enumerate(files):
- try:
- shutil.move(file, destination)
- # Atualiza a barra de progresso na interface
- progress = (index + 1) * 100 / total_files
- progress_bar['value'] = progress
- label.config(fg='green', font=('Helvetica', 10, 'bold'))
- label.update()
- time.sleep(0.5)
- label.config(fg='green', font=('Helvetica', 10))
- label.update()
- time.sleep(0.5)
- except Exception as e:
- messagebox.showerror("Erro", f"Não foi possível mover o arquivo {file}. Erro: {e}")
- return
- messagebox.showinfo("Sucesso", "Arquivos movidos com sucesso!")
- def move_files_in_thread(files, destination, label, progress_bar):
- """ Inicia uma thread para mover os arquivos. """
- thread = threading.Thread(target=move_files_thread, args=(files, destination, label, progress_bar))
- thread.start()
- def main():
- root = Tk()
- root.title("Mover Arquivos")
- center_window(root, 400, 150)
- # Exibir alerta sobre a movimentação e exclusão dos arquivos
- confirmation = show_alert()
- if not confirmation:
- root.destroy()
- return
- label_intro = Label(root, text="Por favor, selecione os arquivos que deseja mover:")
- label_intro.pack(pady=5)
- button_exit = Button(root, text="Sair", command=root.destroy)
- button_exit.pack(pady=5)
- files = select_files()
- if not files:
- messagebox.showinfo("Cancelado", "Nenhum arquivo foi selecionado.")
- root.destroy()
- return
- destination = select_destination()
- if not destination:
- messagebox.showinfo("Cancelado", "Nenhum diretório de destino foi selecionado.")
- root.destroy()
- return
- label = Label(root, text="Aguarde enquanto os arquivos estão sendo movidos...")
- label.pack(pady=10)
- progress_bar = Progressbar(root, orient='horizontal', length=380, mode='determinate')
- progress_bar.pack(pady=10)
- move_files_in_thread(files, destination, label, progress_bar)
- root.mainloop()
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement