2010-07-13 54 views
0

我有一个进展,我与PyQt4 QProgessDialog“mintor”。基本上,我有这样一个循环:使QProgressDialog更新,也值不会改变

while progressThread.isRunning(): 
    self.progressDialog.setRange(0, self.progressTotal_) 
    self.progressDialog.setValue(self.progress_) 
del self.progressDialog 

的progressThread upades变量self.progessTotal_和self.progress_

这工作得很好,当progress_变化值不断。 但是对于某些任务而言,情况并非如此(因为进度报告并不详细)。

结果是,progressDialog显示一个灰色的窗口,直到出现变化。我可以在while循环中插入什么,强制progressDialog升级也没有变化?

谢谢! nathan

回答

0

您应该将来自线程的更新信号连接到进度对话框。你用你的循环阻塞了UI线程。你可以在循环中添加一个QApplication :: processEvents调用,但是不要阻塞UI线程,你会没事的。

+0

嘿, 谢谢,这是有道理的。我很难做到这一点。我知道如何将信号连接到python函数。但是,我怎样才能创建自己的信号,将它连接到setProgress插槽并从线程调用它? – Nathan 2010-07-13 16:10:46

+0

@Nathan http://www.commandprompt.com/community/pyqt/x1408查看示例7-7。从您的QThread子类中发出您的信号。 – 2010-07-13 16:18:07

相关问题