Пишет "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 и ОС думает что приложение зависло.