Can asyncio be combined with PyQt5?

ullix ullix at urkam.de
Sun Oct 29 07:36:21 GMT 2023


Thank you, I was afraid of such an answer.

Isn't it of convern that two major developments - PyQt and asyncio - 
exclude each other' use? In particular both of your links seem to 
suggest that a combination is possible.

Rewriting the telegram-bot lib is not an option for me, and asyncio does 
not seem a stringent necessity, as its older version runs without it.

Thanks again

ullix


Am 28.10.23 um 18:45 schrieb Charles:
> An async function is a coroutine and you would need to run it via Qt 
> threads rather than the usual asyncio.
>
> For example you can use these libraries
>
> https://github.com/hanjinliu/qt-asyncio (simple)
> https://github.com/altendky/qtrio (more complicated)
>
> I don't think a constructor can be async though.
>
> If you just want the function to run asynchronously, why not just 
> create a qt worker thread. Or if you want
> to use an async library, find if there is a library that is 
> implemented over trio. A normal async library that runs
> over asyncio will not work with Qt.
>
> On Sat, Oct 28, 2023 at 10:55 PM ullix <ullix at urkam.de> wrote:
>
>     My PyQt5 app so far runs well. But trying to add functionality
>     requiring asyncio results in failure.
>
>     I tried to integrate the telegram-bot function (pip:
>     python-telegram-bot). When using the old version 13.15 I got it
>     running, but I am swamped with deprecation warning. But the new
>     version 20.6 mandates the use of asyncio, and here is where I lack
>     understanding; I can't get it to work.
>
>     This is working code of the old app:
>     ex=ggeiger()
>     ... classggeiger(QMainWindow):
>     def__init__(self):
>     """init the ggeiger class"""
>     super().__init__()
>     Adding async and await all the way up to this point works, but
>     with e.g. this (and other attempts) it fails:
>     ex=await ggeiger()
>     ... classggeiger(QMainWindow):
>     async def__init__(self):
>     """init the ggeiger class"""
>     await super().__init__()
>     I guess it is possible? Any pointers welcome?
>     ullix
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20231029/cd1b2103/attachment.htm>


More information about the PyQt mailing list