长时间运行任务的简单进度条(基于Tkinter)
progress_meter的Python项目详细描述
这为长时间运行的任务提供了一个非常简单的进度条。
设计有点像EasyGUI, 允许简单脚本被gui化而不被重构为回调 以及一个事件循环。它自然可以用作 随和。接口不能很简单,但希望它只是 再复杂一点。
进度表基于this code 迈克尔·兰格。
高级界面如下:
from progress_meter import withprogress @withprogress(300, color="green") def demo(foo, bar=None): for i in range(300): # Do one (or a few) steps of processing, then... yield i demo()
您可以使用异常来查看用户是否在它之前取消了进程 已完成:
try: demo() except UserCancelled: print("Cancelled") else: print("Completed")
还有一个低级接口,您可以在其中直接实例化窗口:
from progress_meter import MeterWindow def _demostep(meter, value): meter.set(value) if value < 1.0: value = value + 0.005 meter.after(50, lambda: _demostep(meter, value)) else: meter.set(value, 'Demo successfully finished') def demo(): root = MeterWindow(className='meter demo') root.meter.set(0.0, 'Starting demo...') root.after(1000, lambda: _demostep(root.meter, 0.0)) root.mainloop()
要在更完整的gui中单独使用进度条,可以使用Meter 从这个模块(哪个子类tkinter.Frame)初始化。