目前,我正在开发一个用PyQt5编写的图形用户界面程序.我的程序有几个相继运行的步骤.在完成每个步骤之后,我想打印Step1 finished,然后打印Step2 finished,依此类推.由于主窗口冻结,print无法工作. 如果你能给我一些解决方案,那将是非常有帮助的.

推荐答案

一个简单的解决方案是基于thread的解决方案,您可以在完成任务后设置一个事件标志:

import threading


done_flag = threading.Event()

def print_status():
    while True:
        done_flag.wait()
        print("I'm done!")
        done_flag.clear()

在您的函数中,您必须调用.SET_FLAG.此函数会一直阻塞,直到您的函数完成为止(如果您总是调用SET_FLAG).

顺便说一句,在图形用户界面应用程序中使用线程总是很好的做法.这避免了由于主循环等不能运行而造成的冻结.

顺便说一句,我建议使用logging,而不是原始打印,这样可以提供更多有用的信息.

Python相关问答推荐

处理(潜在)不断增长的任务队列的并行/并行方法

将输入管道传输到正在运行的Python脚本中

Telethon加入私有频道

如何请求使用Python将文件下载到带有登录名的门户网站?

如何使用表达式将字符串解压缩到Polars DataFrame中的多个列中?

优化器的运行顺序影响PyTorch中的预测

什么是最好的方法来切割一个相框到一个面具的第一个实例?

lityter不让我输入左边的方括号,'

Python Pandas—时间序列—时间戳缺失时间精确在00:00

Pandas:填充行并删除重复项,但保留不同的值

如何按row_id/row_number过滤数据帧

以异步方式填充Pandas 数据帧

在Python中控制列表中的数据步长

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?

ModuleNotFoundError:Python中没有名为google的模块''

Pythonquests.get(Url)返回Colab中的空内容

如何将一个文件的多列导入到Python中的同一数组中?

as_index=False groupBy不支持count

使用loc计算特定行的平均值,loc找不到行值

对齐多个叠置多面Seborn CAT图