dolphin23
@dolphin23
Новичок в программировании

Как избавиться от зависания GUI программы при обработке запросов?

Есть программа в которую через GUI передается ссылка, прога ее берет и делает некоторые манипуляции, отправляет запросы и т.д. и вот пока она это делает весь GUI программы полностью зависает. Я еще новичок, знаю что то про async await и multiprocessing, но вообще не понимаю как их использовать

main файл:
from PyQt6.QtWidgets import QApplication, QWidget
from MainWidget import Ui_Form

import sys 

app = QApplication(sys.argv)
window = QWidget()
ui = Ui_Form()
ui.setupUi(window)

window.show()  

app.exec()


в классе MainWidget есть функция которая как раз и заставляет виснуть GUI:
def getVOD(self):
        urlID = self.urlText.text()
        ID = urlID.split('net/')[-1].split("/storyboards")[0] 
        ID = urlID.split('dgeft87wbj63p/')[-1].split("//thumb")[0]    

        for url in self.urls:
            req1 = requests.get(url + ID + "/chunked/index-dvr.m3u8").status_code
            req2 = requests.get(url + ID + "/chunked/highlight-" + ID + ".m3u8").status_code
            if req1 == 200 or req1 == 302:
                webbrowser.open_new_tab(url + ID + "/chunked/index-dvr.m3u8")
                break
            elif req2 == 200 or req2 == 302:
                webbrowser.open_new_tab(url + ID + "/chunked/highlight-" + ID + ".m3u8")
                break
            else:
                continue
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
События графического интерфейса обрабатываются бесконечным циклом, который запускается, когда вы вызываете app.exec() Его нельзя останавливать, иначе приложение зависнет. Но ваша функция getVOD именно это и делает - останавливает цикл обработки событий окна. Запускайте её в QThread.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы