我的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
来做到这一点答案 0 :(得分:3)
只需在每个append
您可以使用静态方法QCoreApplication
QCoreApplication.instance
的实例
这将要求Qt在完成正在执行的任务之前“刷新”你的gui,因为该命令处理所有未决事件。