У меня относительно большое приложение, написанное на Python и использующее PyQT в качестве интерфейса GUI.Все приложение в одном классе, в одном файле.
Вот пример кода:
class Application(QMainWindow):
def __init__(self):
super(etc...)
self.connect(self.mainBtn, SIGNAL("clicked()"), self.do_stuff)
def do_stuff(self):
<checking some parameters>
else:
do_some_other_long_stuff()
def do_some_other_long_stuff(self):
500 lines of code of stuff doing
Однако, вот в чем проблема: когда я нажимаю mainBtn, все идет хорошо, за исключением зависаний типа GUI - я ничего не могу сделатьиначе, пока функция не будет выполнена (и это веб-скребок, так что это занимает довольно много времени).Когда функция do_some_other_long_stuff заканчивается, все возвращается на круги своя.Это действительно раздражает.
Есть ли способ как-то "фон" для процесса do_some_other_stuff?Я заглянул в QThreads и, похоже, это именно так, однако это потребовало бы от меня переписать практически весь код, перевести половину моей программы в другой класс и, следовательно, изменить все имена переменных (при получении переменной из GUI).класс и положить его в рабочий класс)