在我的 pyqt gui 中有一个按钮,单击它会运行一个函数,该函数会执行一些冗长的数学计算。在这个函数中有很多打印语句,例如:
print "finished calculating task1 going on to task2"
因此,通过使用这样的打印语句,我不需要让我们说一个进度条来指示程序进度。我在我的 gui 中添加了一个 QTextEdit 小部件,并将该函数中的所有打印语句替换为:
MyTextEdit.append('消息')
其中 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 有了这样做的想法
最佳答案
只需调用QCoreApplication.processEvents在每个 append
您可以使用静态方法QCoreApplication.instance
获取您的QCoreApplication
实例
这将要求 Qt 在完成正在执行的任务之前“刷新”您的图形用户界面,因为该命令会处理所有未决事件。
关于python - 派克: 'dynamically' append to qtextedit from function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12602179/