Почему поток не останавливается после выполнения? - PullRequest
0 голосов
/ 08 мая 2020

Здравствуйте, я написал простую программу, которая изменяет размер изображений на l oop. Я хочу показать каждое изображение, когда изменение размера выполнено. Когда отображается изображение с измененным размером, я хочу, чтобы моя программа ждала нажатия кнопки tkinter. Все работает нормально, но когда я вызываю метод destroy (), поток с именем resizer не останавливается. Может ли кто-нибудь указать мне, почему это происходит? Взгляните на пример полностью:

import argparse
import os
import threading
from PIL import Image
import tkinter as tk


def resize_images(args, evt, root):
    images_names = os.listdir(args.src_dir)
    for image_name in images_names:
        evt.clear()
        image_path = os.path.join(args.src_dir, image_name)
        img = Image.open(image_path)
        img.show()
        resized_img = img.resize((56, 56))
        resized_img.show()
        evt.wait()
    root.destroy()


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--src_dir", default="Data")
    opt = parser.parse_args()
    event = threading.Event()
    root = tk.Tk()
    t1 = threading.Thread(name="resizer", target=resize_images, args=(opt, event, root))
    t1.start()
    root.title("Manage program execution")
    button = tk.Button(root, text='Next', width=25, command=event.set)
    button.pack()
    root.mainloop()
    t1.join()

Большое спасибо за любую помощь!

...