运行在tkinter事件循环之上的异步库
asynctkinter的Python项目详细描述
异步转换器
在tkinter的事件循环之上工作的异步库。 (Youtube)
安装
pip install asynctkinter
使用
^{pr2}$等待同时完成/取消多个任务
asyncdefsome_task(label):fromfunctoolsimportpartialimportasynctkinterasatsleep=partial(at.sleep,after=label.after)# wait until EITEHR a label is pressed OR 5sec passestasks=awaitat.or_(at.event(label,'<Button>'),sleep(5000),)print("The label was pressed"iftasks[0].doneelse"5sec passed")# wait until BOTH a label is pressed AND 5sec passes"tasks=awaitat.and_(at.event(label,'<Button>'),sleep(5000),)
同步原语
有一个三重奏的Event等价物。在
importasynctkinterasatasyncdeftask_A(e):print('A1')awaite.wait()print('A2')asyncdeftask_B(e):print('B1')awaite.wait()print('B2')e=at.Event()ak.start(task_A(e))# A1ak.start(task_B(e))# B1e.set()# A2# B2
注意
- 为什么
patch_unbind()
是必需的?看看this。在
- 项目
标签: