python - 派克: 'dynamically' append to qtextedit from function

标签 python dynamic pyqt4 stdout qtextedit

在我的 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/

相关文章:

python - 安装 pyqt4-dev-tools 时出现问题

python - 字符串格式化自定义对象

python - 在 MultiIndex 级别和 groupby 上迭代 Pandas 以获取总计

python - 如何比较两个 numpy 字符串数组与 "in"运算符以使用数组广播获取 bool 数组?

c - C 中的字符串动态分配

PyQT:使用按钮添加到 QAbstractItemModel

python - Pyqt4:如何在 Qscintilla 中正确添加边距

python - 将 *args 作为列表传递时如何禁用 "E1120: No value for argument if"的 pylint 报告

python - python3中将类实例化为未知变量名

c - 是否有另一种方法可以在 C 中释放动态分配的内存 - 不使用 free() 函数?