def backup(self): """ function takes gui inputs, plugs into backup class runs backup displays relevant outputs flow: - get inputs from input boxes - check inputs - disable buttons - create backup object - start timer - run back function - end timer - display time taken """ target_folder = self.target_folder.get() backup_folder = self.backup_path.get() password = self.pass_box.get() if not self.check_inputs(target_folder, backup_folder, password): return self.disable_buttons() backup_obj = Backup(target_folder, backup_folder, password) start = time.time() try: dest = backup_obj.backup(ui_caller=self) except OSError as e: messagebox.showerror( "OS Error", f"Following Error Occurred During Backup: {e}") self("Error Occurred, Backup Aborted") self.enable_buttons() return end = time.time() t = datetime(1, 1, 1) + timedelta(seconds=(end - start)) self( f"Time Taken: {t.hour} Hours: {t.minute} Minutes: {t.second} Seconds" ) self.enable_buttons() messagebox.showinfo( "Backup Complete", f"Backup Successfully completed\n Output File: {dest}")