Использовать Qt Pyside2 с синтаксисом asyncio await? - PullRequest
0 голосов
/ 21 сентября 2019

Как ждать эту функцию ( src ) в главном цикле pyside2:

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: я посмотрел примерыдля pyside2, имеющего примеры Qthreads, но не ожидающего asyncio.Моя библиотека использует asyncio, так как ждать в pyside2?

Это серьезная проблема: https://github.com/harvimt/quamash/issues/104 не поддерживает pyside2, а https://github.com/gmarull/asyncqt не поддерживается.Какое решение?
Пожалуйста, как интегрировать такой простой вызов.я боюсь, что сбои / ошибки на не поддерживаемых репозиториях

1 Ответ

0 голосов
/ 22 сентября 2019

PyQt очень популярен.Хотя некоторые могут не захотеть этого из-за проблем с лицензированием.Выбираете ли вы PyQt или PySide, QTimer обладает очень приятной функциональностью.В частности, вы можете использовать метод singleShot() для запуска кода с определенной задержкой.

from PySide2.QtCore import QTimer

timer = QTimer()

def myfunc():
    # do your stuff here
    pass

def do_request(self, value):
    timer.singleShot( delay_msec, myfunc)

вы также можете start() QTimer для запуска задачи с обычной interval.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...