Пишет "python не отвечает" при работе приложения PyQt5

уважаемые коллеги! Я решила сама попробовать написать приложение для скачивания видео с YouTube. Работаю через Qt Designer. Но вот проблема, при скачивании большого видео(от 45 минут) вылетает "python не отвечает" и не дает дальше работать с приложением. Это исчезает когда видео полностью скачается, но я хотела бы еще писать прогресс, на сколько скачалось видео. Помогите пожалуйста! Код ниже

import sys
import pytube
import asyncio
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow


class MyWidget(QMainWindow):
    def __init__(self):
        super().__init__()
        uic.loadUi('Da.ui', self)
        self.showFullScreen()        # Загружаем дизайн
        # self.label_5.hide()
        self.label_6.hide()
        self.label_3.hide()
        self.label_4.hide()
        self.toolButton.clicked.connect(self.run)


    def run(self):
        # self.threadclass.start()
        c = [str(i) for i in range(1, 101)]
        # dd(self.lineEdit, self.lineEdit_2)
        self.label_5.hide()
        self.label_6.hide()
        self.label_3.hide()
        self.label_4.hide()
        url = self.lineEdit.text()
        b = self.lineEdit_2.text()
        youtube = pytube.YouTube(url)
        video = youtube.streams.get_highest_resolution()
        video.download(b)
        #тут хотела писать прогресс, но наткнулась на ошибку



def except_hook(cls, exception, traceback):
    sys.__excepthook__(cls, exception, traceback)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = MyWidget()
    form.show()
    sys.excepthook = except_hook
    sys.exit(app.exec())

Ответы (1 шт):

Автор решения: alex

потому что надо делать в потоке, только обычные python потоки не подойдут для PyQt приложения. Нужно научиться использовать QThread

А так, когда ты вызываешь долгоиграющую функцию, то прерываешь событийный цикл PyQt и ОС думает что приложение зависло.

→ Ссылка