4

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

print "finished calculating task1 going on to task2"

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

MyTextEdit.append('message')

MyTextEditQTextEdit 小部件在哪里,并且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')执行 a 时它都会立即运行,并且小部件会在那一刻显示消息,而不是在所有其他消息的末尾显示。

我究竟做错了什么?

通过阅读这篇文章,我有了这样做的想法

4

1 回答 1

3

每次之后只需调用QCoreApplication.processEventsappend

QCoreApplication您可以使用静态方法获取您的实例QCoreApplication.instance

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

于 2012-09-26T13:29:00.777 回答