You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在调整滑块时获取ipywidgets.interact中的number1、number2数值

ipywidgets.interactive 实时获取滑块参数的方法

有两种常用的实现方案,你可以根据使用场景选择:

方法1:使用可变容器存储实时参数(适配现有代码,修改成本最低)

直接在原有代码基础上新增一个全局可变容器(字典、列表都可以),每次滑块拖动触发函数运行时,自动更新容器内的参数值,你在notebook任意位置都可以直接读取容器内的最新值。
修改后的示例代码如下:

import ipywidgets as widgets

# 定义可变字典存储实时参数,初始值和滑块默认值保持一致
current_params = {"number1": 20, "number2": 30}

@widgets.interact(number1=20, number2=30)
def sum_or_prod(number1, number2):
    # 滑块变动时自动更新参数值
    current_params["number1"] = number1
    current_params["number2"] = number2
    
    s_2 = number1 + number2
    p_2 = number1 * number2
    if p_2 < 1000:
        print('The result is sum: ' + str(s_2))
    else:
        print('The result is product: ' + str(p_2))

需要取值时直接读取current_params["number1"]、current_params["number2"]即可拿到当前滑块的最新数值。

方法2:显式创建Interactive实例直接读取属性(更规范的通用方案)

@interact装饰器本质是封装了Interactive控件的创建逻辑,你可以不用装饰器写法,手动创建Interactive控件实例,直接从实例属性读取参数值,不需要额外定义存储变量。
示例代码如下:

import ipywidgets as widgets
from IPython.display import display

def sum_or_prod(number1, number2):
    s_2 = number1 + number2
    p_2 = number1 * number2
    if p_2 < 1000:
        print('The result is sum: ' + str(s_2))
    else:
        print('The result is product: ' + str(p_2))

# 手动创建Interactive实例
interact_widget = widgets.interactive(sum_or_prod, number1=20, number2=30)
# 渲染控件
display(interact_widget)

需要取值时直接读取interact_widget.kwargs即可拿到包含两个参数最新值的字典,也可以单独取interact_widget.kwargs["number1"]、interact_widget.kwargs["number2"]获取对应参数值。

两种方案都是实时同步滑块数值,只要拖动滑块,对应存储的参数就会自动更新,不需要额外触发操作。

内容的提问来源于stack exchange,提问作者DrChou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:06:03