Форум сайта python.su
Создаю свой видеоредактор. Сделал GUI интерфейс на PyQT6.
Вся работа с видео происходит с помощью библиотеки - moviepy.
Есть функция - create_video. Она создает и сохраняет в нужную папку финальный вариант видео (после всех манипуляций).
def create_video(): // здесь выполняются манипуляции с видео, код вырезал. // в конце происходит запись в файл video.write_videofile('.../output/video.mp4')
// в начале кода объявил from threading import Thread // по нажатию кнопки эта функция запускает create_video def btn_create_onclick(): t1 = Thread(target=create_video) t1.start() t1.join()
Офлайн
Есть такой модуль threading
https://pythonim.ru/moduli/threading-python
Офлайн
Та же ошибка что и вначале - вы при нажатии кнопки создаете тред
Вам же нужно создать его отдельно и по нажатию кнопки помещать в него задачу
Так же можете посмотреть хороший пример где треды в самом куте используют
https://realpython.com/python-pyqt-qthread/
Офлайн
import time import threading import tkinter as tk from tkinter import ttk class App(tk.Tk): def __init__(self): super().__init__() self.button = tk.Button(self, command=self.start_action, text="начать") self.button.pack(padx=50, pady=20) def start_action(self): thread = threading.Thread(target=self.run_action) print(threading.main_thread().name) print(thread.name) thread.start() def run_action(self): print("Запуск длительного действия...") progress_bar = ttk.Progressbar(self, mode="determinate", length=400, maximum=101) progress_bar.pack(pady=10) for i in range(10): progress_bar.step(10) time.sleep(1) print("Длительное действие завершено!") if __name__ == "__main__": app = App() app.mainloop()
Офлайн