Pyqt:'动态'从函数追加到qtextedit

时间:2012-09-26 12:52:48

标签: python dynamic pyqt4 stdout qtextedit

我的pyqt gui中有一个按钮,当单击时会运行一个执行一些冗长的数学计算的函数。在这个函数里面有很多打印语句,如:

print "finished calculating task1 going on to task2"

因此,通过使用类似的打印语句,我不需要让我们说一个进度条,例如表示程序进度。我在我的gui中添加了一个QTextEdit小部件,并将该函数中的所有print语句替换为:

MyTextEdit.append('message')

其中MyTextEdit是QTextEdit小部件,message是我希望打印函数的消息。

示例:

MyTextEdit.append('finished calculating task1 going on to task2')
task2 #lengthy second task
MyTextEdit.append('finished calculating task2 going on to task3')
task3 #lengthy third task

当我单击按钮并运行该函数时,该函数内的所有计算都必须完成,然后所有消息都附加到QTextEdit小部件。

我认为每次执行MyTextEdit.append('message')时它都会立即运行,小部件会立即显示消息,而不会在所有其他消息的最后显示消息。

我做错了什么?

我想通过阅读post

来做到这一点

1 个答案:

答案 0 :(得分:3)

只需在每个append

之后拨打QCoreApplication.processEvents

您可以使用静态方法QCoreApplication

获取QCoreApplication.instance的实例

这将要求Qt在完成正在执行的任务之前“刷新”你的gui,因为该命令处理所有未决事件。