ipython / ipython/ipykernel

printing from custom loop

Abierto
#1,083 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
734
Forks
412
Merge medio
1 d 5 h
PR fusionados (30 d)
8

Descripción

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:

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.