我有一个用Python编写的比较大的应用程序,并且使用PyQT作为GUI前端。整个应用程序在一个类中,在一个文件中。在后台工作 - 如何? Python和PyQT
下面是一个例子代码:
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获取变量时类,并把它在工人阶级)
谢谢。那么如何在不创建不同的Class()的情况下使用多个线程?我在网上找到的所有例子都使用不同的类。 –
@Deusdies:在单个类中有500行或更多行,你不是真的想要重构这个巨大的[[god-class](http://en.wikipedia.org/wiki/God_object))吗? –
@HovercraftFullOfEels:这是最终的解决方案。但如果可能的话,我宁愿不必那样做。 –