python 线程 图形用户界面

标签 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.connectSignalsWindow2()
def connectSignalsWindw2(self):
   # DOING SOME REAL SERIOUS COMPUTATION ...

=> 现在 ParalGui 类中的 def run(self): 看起来像这样:

def run(self):
    self.gui.show()

=> 我只是想测试我的 GUI 是否能与计算并行运行。

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

现在发生的是典型的“你没有线程卡住你的 gui”...非常感谢帮助

最佳答案

尽管您的示例非常有限,但我将尝试一下我认为您在这里所做的事情......

对我来说,你似乎在向后做事,并试图在主线程中进行大量计算的同时在线程中显示你的图形用户界面?

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

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

关于python 线程 图形用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403040/

相关文章:

python - 如何在Windows中将ghostscript DLL库提供给python?

java - 线程计数器在第一个刻度后不会增加

c# - 自旋锁和只读字段

python - 复杂的上下文菜单子(monad)菜单

python - PYQT 在打开之前向现有 UI 添加额外的菜单项

python - matplotlib (python) - 在没有 pyplot 的情况下为多个图创建单个自定义图例

python - 将训练数据更改为 libsvm 格式以将其传递给 libsvm 中的 grid.py

python - 添加 __slots__ 后@property 不工作

python - 如何在Django中制作删除按钮

java - 避免 Java 代码中的同步块(synchronized block)