Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

printing from custom loop

未关闭
#1,083 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
38/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
停滞
技术栈
jupyter, python
领域
backend, tooling

调研方向

首先阅读 ipykernel/eventloops.py,同时查看自定义循环的 cb() 调用以及 kernel.shell_stream.flush(limit=1) 的处理。然后在 Jupyter web UI 或 IntelliJ IDEA 中复现 %gui imgui 流程,并确认 imgui_app() 中的 print('123') 会在应用关闭前出现。

由索引模型根据 Issue 内容生成。

描述

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:

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:

%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 🙏

主要语言
Python
星标
734
派生
411
平均合并
1 天 2 小时
30 天内合并 PR
9

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

ipython/ipykernel 的其他 Issue

查看 ipython/ipykernel 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。