混合使用asyncio和Kivy:如何同时启动asyncio循环和Kivy应用程序?

2024-09-30 22:15:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在异步中迷失。在

我同时在学习Kivy和asyncio,并陷入了解决运行Kivy和运行asyncio循环的问题,因为无论我如何处理,它们都是阻塞调用,需要按顺序执行(好吧,我希望我错了)

loop = asyncio.get_event_loop()
loop.call_soon(MyAsyncApp().run())
loop.run_forever()

我当前的尝试导致应用程序被启动,但没有执行协同程序,例如,当我单击“连接”按钮时,我应该开始使用loop.call_soon来调度和执行任务,但是什么都没有发生。在

有人能看一下我的代码并提出解决问题的正确方法吗?在


^{pr2}$

Tags: runloopeventasyncio应用程序get顺序call
1条回答
网友
1楼 · 发布于 2024-09-30 22:15:38

My current attempt results in the application being launched, but no coroutine is being executed

发生这种情况是因为MyAsyncApp().run()阻塞了执行流,并且控制永远不会返回到asyncio的事件循环。这就是所有事件循环的工作原理。在

与手动尝试交叉两个循环相比,更短的方法是使用现有的尝试:

https://github.com/kivy/kivy/pull/5241

这个PR来自Kivy的一个开发人员,包含了工作实现以及解释和使用示例。在

然而,它还没有合并到主控:你需要用这个公关手动构建Kivy。在

相关问题 更多 >