Jupyter Notebook运行DearPyGui代码时内核崩溃求助
问题描述
- 已在Python 3.10虚拟环境中安装DearPyGui 1.8.0,尝试降级至1.7.3后问题依旧
- 运行官方入门代码时,Jupyter Notebook内核崩溃,提示:
Documents ... /DearPyGui/Studies&Tries.ipynb对应的内核似乎已崩溃,将自动重启。 - 相同代码通过Python命令行(
(dpg_py310) amen@ubu:~$ python dpg01.py)运行正常
涉事代码:
import dearpygui.dearpygui as dpg dpg.create_context() dpg.create_viewport(title='Custom Title', width=600, height=300) with dpg.window(label="Example Window"): dpg.add_text("Hello, world") dpg.add_button(label="Save") dpg.add_input_text(label="string", default_value="Quick brown fox") dpg.add_slider_float(label="float", default_value=0.273, max_value=1) dpg.setup_dearpygui() dpg.show_viewport() dpg.start_dearpygui() dpg.destroy_context()
解决方案
DearPyGui的阻塞式事件循环会与Jupyter Notebook的内核事件循环冲突,导致内核崩溃。以下是两种可行的解决方式:
方法1:通过子进程运行GUI代码
启动独立Python进程运行DearPyGui代码,彻底隔离Notebook内核与GUI事件循环:
import subprocess import sys # 替换为你的GUI脚本路径 script_path = "dpg01.py" subprocess.Popen([sys.executable, script_path])
执行后GUI窗口会在独立进程中启动,不会影响Notebook内核的正常运行。
方法2:改用非阻塞事件循环
修改代码使用非阻塞的帧渲染模式,减少与Notebook内核的冲突(稳定性略逊于方法1):
import dearpygui.dearpygui as dpg import time dpg.create_context() dpg.create_viewport(title='Custom Title', width=600, height=300) with dpg.window(label="Example Window"): dpg.add_text("Hello, world") dpg.add_button(label="Save") dpg.add_input_text(label="string", default_value="Quick brown fox") dpg.add_slider_float(label="float", default_value=0.273, max_value=1) dpg.setup_dearpygui() dpg.show_viewport() # 手动控制非阻塞事件循环 while dpg.is_dearpygui_running(): dpg.render_dearpygui_frame() time.sleep(0.01) dpg.destroy_context()
内容的提问来源于stack exchange,提问作者Amen
相关产品推荐
相关产品推荐

