将 Qt Pyside2 与 asyncio await 语法一起使用?

Use Qt Pyside2 with asyncio await syntax?

如何在pyside2的主循环中等待这个函数(src):

async def do_request(value): #asyncqt maybe possible
    #print("do request")
    await asyncio.sleep(value)
    #print("request finished")
    return value

async def eventFilter(self, source, event): #impossible, needs pyside2 rewrite
     ... 

我非常不愿意使用任何非官方的东西,所以 pyside2:我查看了具有 Qthreads 示例的 pyside2 示例,但没有 asyncio await。我的库使用 asyncio 那么如何在 pyside2 中等待?

这是一个严重的问题:https://github.com/harvimt/quamash/issues/104 does not support pyside2 and https://github.com/gmarull/asyncqt 未维护。解决方法是什么?
请问如何集成这样简单的调用。我担心 breaks/bugs 未维护的回购

PyQt 非常流行。尽管由于许可问题,有些人可能不想要它。无论您选择 PyQt 还是 PySide,QTimer 都有一些非常好的功能。特别是,您可以使用 singleShot() 方法在特定延迟时 运行 编码。

from PySide2.QtCore import QTimer

def myfunc():
    # do your stuff here
    pass

def do_request(self, value):
    # call static function singleShot
    QTimer.singleShot( delay_msec, myfunc)

您还可以 start() QTimer 运行 定期 interval 任务。

看完 https://www.youtube.com/watch?v=ol5IuJyw-Tg 使用内置 qthread qrunnable qthread 不阻塞主 gui 线程是可行的方法。

有关示例,请参阅 https://code.qt.io/cgit/pyside/pyside-setup.git/tree/examples/corelib 并浏览源代码(适用于 pyside2)