- Make asyncio work with all GUI frameworks, sample code be implemented in tornado, pygame, tkinter, gtk, qt5, win32, pyside6
- Make webview_python library support call async python from javascript a. https://github.com/congzhangzh/webview_python b. congzhangzh/webview_python#1
Design: ./design_en.md
- guest mode implemented here: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/asyncio_guest_run.py
- python stdlib patch here: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/patches/base_events.diff
Framework | Windows | Linux | Mac |
---|---|---|---|
Tkinter | ✅ | ✅ | ❓ |
Win32 | ✅ | ➖ | ➖ |
GTK | ❓ | ✅ | ❓ |
QT | ✅ | ✅ | ❓ |
PySide6 | ✅ | ✅ | ❓ |
Pygame | ✅ | ✅ | ❓ |
Tornado | ✅ | ✅ | ❓ |
- Tkinter: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/asyncio_guest_tkinter.py
- Win32: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/asyncio_guest_win32.py
- GTK: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/asyncio_guest_gtk.py
- QT: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/asyncio_guest_qt5.py
- PySide6: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/asyncio_guest_pyside6.py
- Pygame: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/asyncio_guest_pygame.py
- Tornado: https://github.com/congzhangzh/asyncio-guest/blob/master/asyncio_guest/asyncio_guest_tornado.py
V8 embed (main: JS is really ugly, but once some rich one keep use and improve it, it will be wonderful )
- https://trio.readthedocs.io/en/stable/reference-lowlevel.html#using-guest-mode-to-run-trio-on-top-of-other-event-loops
- https://github.com/richardsheridan/trio-guest
- Trigger by timer: https://github.com/sunoru/Webviews.jl/blob/b28fb63300ac68a8f1a098e53237f1af46f99133/src/platforms/windows/Impl.jl#L58
- Trigger by timer: https://github.com/sunoru/Webviews.jl/blob/b28fb63300ac68a8f1a098e53237f1af46f99133/src/platforms/windows/Impl.jl#L59
- Impl: https://github.com/sunoru/Webviews.jl/blob/b28fb63300ac68a8f1a098e53237f1af46f99133/src/platforms/common.jl#L16
Custom message loop to support peried trigger (maybe a hidden window and custom wndproc is better?)
- https://github.com/sunoru/Webviews.jl/blob/b28fb63300ac68a8f1a098e53237f1af46f99133/src/platforms/windows/Impl.jl#L74
- https://github.com/sunoru/Webviews.jl/blob/b28fb63300ac68a8f1a098e53237f1af46f99133/src/platforms/windows/Impl.jl#L83
- https://github.com/MakieOrg/Makie.jl (after some crash of Makie, I understand how julia thread model works)
- https://github.com/gmarull/asyncqt
- https://github.com/harvimt/quamash
- https://github.com/CabbageDevelopment/qasync
- https://discuss.python.org/t/connecting-asyncio-and-tkinter-event-loops/14722/33
- congzhangzh/webview_python#1
- webview/webview_deno#185
- https://github.com/congzhangzh/python_gui_with_asyncio
- Where all important iteration happend: https://github.com/congzhangzh/asyncio_guest_run/tree/main/v2
- denoland/deno#3844
- https://choubey.gitbook.io/internals-of-deno/threading-model/default-threads
- https://docs.rs/tokio/latest/tokio/runtime/index.html#current-thread-runtime-behavior-at-the-time-of-writing
- https://questions.deno.com/m/1247553728001609729
- https://www.reddit.com/r/rust/comments/tln9nu/what_is_the_difference_between_tokio_singlethread/