基本思想是拥有一个处理单个文件的函数,然后使用事件循环重复调用该函数,直到没有更多文件要处理为止。您可以使用
after命令执行此 *** 作。
在函数内部,您还可以检查全局标志。如果设置了该标志,则该功能不起作用,也不安排要完成的任何工作。使用暂停按钮按钮设置标志。设置完毕后,只需调用一次函数,它将继续运行,直到处理完所有文件。
例如:
def do_one_file(): global files_to_process, paused if not paused: file = files_to_process.pop() ... do some work here ... if len(files_to_process) > 0: root.after(10, do_one_file)
这将检查您是否已暂停工作。如果没有,它将从文件堆栈中拉出一个文件进行处理。然后,如果还有更多工作要做,它将安排在10毫秒内处理下一个文件。
假设实际工作仅花费几百毫秒,您的GUI将保持响应状态,并且复制在“后台”进行。我将其用引号引起来,因为它们全部发生在主线程上,而不是在后台线程或进程上,但是它发生在GUI不执行其他 *** 作的那一刻(这实际上是大多数时间)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)