Jupyter Notebook添加Dropdown组件后实现Run All时暂停等待选择
Jupyter Notebook 实现Dropdown选择后继续执行Run All的方案
核心实现思路
使用ipywidgets库的下拉选择(Dropdown)和确认按钮组件,通过状态标记+事件回调机制,让程序在执行Run All时暂停在交互步骤,直到用户完成选择并确认后,再自动继续执行后续代码。
完整可行代码示例
首先确保安装并启用ipywidgets:
# 安装库 pip install ipywidgets # Jupyter Notebook 启用扩展(旧版本需要) jupyter nbextension enable --py widgetsnbextension # Jupyter Lab 启用扩展 jupyter labextension install @jupyter-widgets/jupyterlab-manager
然后在Notebook中执行以下代码:
import ipywidgets as widgets from IPython.display import display import time # 创建下拉选择组件 dropdown = widgets.Dropdown( options=['选项1', '选项2', '选项3'], value=None, # 默认未选择任何选项 description='选择项:', disabled=False, ) # 创建确认按钮 confirm_btn = widgets.Button( description='确认选择', disabled=True, # 未选择时按钮不可用 button_style='success', tooltip='点击确认后继续执行', icon='check' ) # 全局状态变量,控制程序暂停/继续 is_confirmed = False selected_value = None # Dropdown选择事件:选中后启用确认按钮 def on_dropdown_change(change): global selected_value selected_value = change['new'] confirm_btn.disabled = False # 确认按钮点击事件:标记确认状态,禁用组件防止重复操作 def on_confirm_click(b): global is_confirmed is_confirmed = True confirm_btn.disabled = True dropdown.disabled = True # 绑定事件回调 dropdown.observe(on_dropdown_change, names='value') confirm_btn.on_click(on_confirm_click) # 渲染交互组件 display(dropdown, confirm_btn) # 暂停程序,等待用户确认 print("请选择选项并点击确认按钮...") while not is_confirmed: time.sleep(0.5) # 降低CPU占用 # ------------------- 后续执行代码 ------------------- print(f"你选择的内容是: {selected_value}") print("开始执行后续业务逻辑...") # 在这里添加你的后续代码
为什么之前的while+input方案无效
input()是从Jupyter的后端控制台读取输入,而Dropdown是前端交互组件,两者的交互通道相互独立,无法实现联动等待。上述方案通过前端组件的事件回调更新Python端的状态标记,再通过循环等待状态变更,实现了前端交互与后端代码执行的同步。
内容的提问来源于stack exchange,提问作者PTQuoc
相关产品推荐
相关产品推荐

