目前,我正在开发一个用PyQt5编写的图形用户界面程序.我的程序有几个相继运行的步骤.在完成每个步骤之后,我想打印Step1 finished
,然后打印Step2 finished
,依此类推.由于主窗口冻结,print
无法工作.
如果你能给我一些解决方案,那将是非常有帮助的.
目前,我正在开发一个用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,而不是原始打印,这样可以提供更多有用的信息.