python线程gui

python线程gui,python,multithreading,pyqt,Python,Multithreading,Pyqt,在使用PyQt4和线程包时,我遇到了一个小问题: 我的代码如下所示: def goForwardToSamples(self): self.main.dataSet = DataSetProvider(self.main.sourceFile) self.ui = Ui_NeuralPredictor2() self.ui.setupUi(self) ParalelGui(self.ui).start() self.connectSignalsWindow

在使用PyQt4和线程包时,我遇到了一个小问题:

我的代码如下所示:

def goForwardToSamples(self):
    self.main.dataSet = DataSetProvider(self.main.sourceFile)
    self.ui = Ui_NeuralPredictor2()
    self.ui.setupUi(self)
    ParalelGui(self.ui).start()
    self.connectSignalsWindow2()
def connectSignalsWindw2(self):
   # DOING SOME REAL SERIOUS COMPUTATION ...
def run(self):
    self.gui.show()
=>现在def run(self):在ParalelGui类中如下所示:

def goForwardToSamples(self):
    self.main.dataSet = DataSetProvider(self.main.sourceFile)
    self.ui = Ui_NeuralPredictor2()
    self.ui.setupUi(self)
    ParalelGui(self.ui).start()
    self.connectSignalsWindow2()
def connectSignalsWindw2(self):
   # DOING SOME REAL SERIOUS COMPUTATION ...
def run(self):
    self.gui.show()
=>我只想测试我的GUI是否与计算并行运行

我觉得我知道问题出在哪里。我有一个QtableView,里面充满了我写的数据(做一些真正严肃的计算…)。当然,QtableView是我发送给ParalelGui线程以显示的ui的一部分。我真的不知道如何使它工作。。。基本上,我想让GUI的一部分线程化并且已经显示出来,而另一部分在不同的线程中动态填充


现在发生的是典型的“你没有线程你的gui冻结”。。。非常感谢您的帮助

即使您的示例非常有限,我还是要尝试一下您在这里所做的事情

对我来说,你似乎是在倒退,试图在一个线程中显示你的gui,而在你的主线程中进行繁重的计算

您真正应该做的是在主线程中创建和显示gui,并在单独的工作线程中运行大量计算。然后,当数据准备就绪时,这个工作线程可以发出一个信号,主线程可以连接到该信号并快速更新表。这样就不会阻塞主线程。经验法则是永远不要在主线上做任何沉重的事情。这意味着GUI及其事件


另外,请确保您使用的是QThread类,而不是python线程模块。

什么是
ParalelGui
?您是否正在尝试以与创建时不同的线程显示gui?您是否也在使用
QThread
类?我们需要您的代码结构的更多上下文。非常感谢!这正是我需要知道的。。。我昨天意识到了这一点(主线程的目标是gui),并以另一种方式修复了它(在另一个线程中进行计算,只保留主gui)。现在我使用线程的线程。。。今天晚些时候我将试用QThread使用QThread的好处是,它带有信号,因为它是一个QObject。在run()例程的任何一点添加并发出更多信号都很简单。QThread还支持事件循环,以防您希望在那里创建gui对象,并使它们能够接收事件并连接到其他信号。更正。我的意思是QThread支持事件循环,这样您就可以将任何QObject移动到它们,并让它们的事件和信号/插槽在那里运行。不是QWidgets。