printing from custom loop
- 主要語言
- Python
- 星號
- 734
- 分支
- 412
- 平均合併
- 1 天 5 小時
- 30 天內合併 PR
- 8
描述
I made a custom event loop for Dear ImGui. Everything works fine, except i can not find a way to produce any output from within the loop where UI code runs. This is the loop:
```py
from ipykernel.eventloops import register_integration
@register_integration('imgui')
def loop_imgui(kernel):
import imgui
app = None
try:
while not kernel.shell.exit_now:
if len(imgui._ipython_callbacks) > 0:
title, cb = imgui._ipython_callbacks[0]
if app is None:
app = imgui.DearImGuiApp(title)
do_continue = False
if app.begin_frame():
try:
do_continue = cb()
finally:
app.end_frame()
if not do_continue:
app.close()
app = None
del imgui._ipython_callbacks[0]
if kernel.shell_stream.flush(limit=1):
break
except Exception as e:
kernel.log.exception(e)
finally:
imgui._ipython_callbacks = []
if app is not None:
app.close()
app = None
@loop_imgui.exit
def loop_imgui_exit(kernel):
pass
def load_ipython_extension(ipython):
pass
def unload_ipython_extension(ipython):
pass
```
I use it as follows:
```py
%load_ext imgui_loop
%gui imgui
import imgui
@imgui.ipython_window('Charts')
def imgui_app():
print('123')
return False
```
Im sorry about this code not being testable as i do not have all parts available on github.. But basically `imgui_app()` gets called on the line `do_continue = cb()` in the loop code. It should print '123' and then imgui app gets closed. I do not see any text printed though, documentation mentions nothing about it either and `ipykernel/eventloops.py` does imply printing should just work..? But somehow it does not. I tested it from IntelliJ IDEA as well as from Jupyter web UI - result is same. Other than this, imgui UI works just fine. Any ideas what i could be missing?
Thanks :pray:
貢獻指南
研究方向
Start by reading ipykernel/eventloops.py alongside the custom loop's cb() call and kernel.shell_stream.flush(limit=1) handling. Reproduce the %gui imgui flow in either the Jupyter web UI or IntelliJ IDEA, then verify that print('123') from imgui_app() appears before the app closes.
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- jupyter, python
- 領域
- backend, tooling
- Issue 類型
- 缺陷
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 38/100