ipython / ipython/ipykernel

printing from custom loop

Đang mở
#1,083 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
734
Fork
412
Merge trung bình
1 ngày 5 giờ
Pull request đã merge (30 ngày)
8

Mô tả

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:

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.