Ответы пользователя по тегу Tkinter
  • Как сделать «заморозку» и «разморозку» интерфейса?

    @Sozdavan
    Похоже, проблема в том, что строки disable_all_buttons() и btnGo.configure(text = self.folder_source + ' >> ' + self.folder_target) выполняются до начала for цикла, а enable_all_buttons() строки btnGo.configure(text='Let's go!') и выполняются после завершения for цикла.

    Чтобы исправить это, вы можете использовать update() метод Tk класса tkinter для обновления графического интерфейса после выполнения строк disable_all_buttons() и btnGo.configure(text = self.folder_source + ' >> ' + self.folder_target) и до forзапуска цикла. Затем вы можете update() снова использовать этот метод после завершения for цикла и до выполнения строк и enable_all_buttons().btnGo.configure(text='Let's go!')

    Вот пример того, как вы можете это сделать:

    def go_copy(self):
        self.disable_all_buttons()
        self.btnGo.configure(text = self.folder_source + ' >> ' + self.folder_target)
        self.update()
    
        for path, directories, files in sorted(os.walk(self.folder_source)):
            for file in sorted(files):
                if file.endswith('.mp3'):
                    path_source = os.path.join(path, file)
                    d = os.path.basename(self.folder_source)
                    f = os.path.relpath(path_source, self.folder_source)
                    path_target = os.path.join(self.folder_target, d, f)
                    os.makedirs(os.path.dirname(path_target), exist_ok=True)
                    shutil.copyfile(path_source, path_target)
        self.update()
        self.btnGo.configure(text='Let's go!')
        self.enable_all_buttons()


    Это должно сделать кнопки отключенными во время процесса копирования и снова включить их, когда процесс будет завершен.
    Ответ написан
    1 комментарий