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

Python Azure Databricks 如何为widgets添加提交按钮及监听器

Azure Databricks 为Widgets添加提交按钮及事件监听实现方案

原生dbutils.widgets没有提供内置的提交按钮、事件绑定API,默认逻辑是参数变更后触发整个单元格重跑,无法实现「点提交才执行指定逻辑」的交互。要实现你截图中的效果,直接使用Databricks运行时原生支持的ipywidgets即可,步骤如下:

环境前置要求

Azure Databricks Runtime 11.3 LTS及以上版本默认预装ipywidgets,无需额外配置。如果使用低于该版本的运行时,先执行安装命令后重启Python内核:

%pip install ipywidgets

完整可运行代码

直接替换你原有Widgets初始化代码即可,代码内已包含输入组件定义、提交按钮、点击事件监听逻辑:

import ipywidgets as widgets
from IPython.display import display

# 清空已存在的原生dbutils组件
dbutils.widgets.removeAll()

# 定义各输入项组件
type_sel = widgets.Dropdown(
    options=["Please select", "IP", "Host"],
    value="Please select",
    description="Type:",
    style={"description_width": "initial"},
    layout=widgets.Layout(width="320px")
)
ip_from_inp = widgets.Text(
    value="none",
    description="IP From:",
    style={"description_width": "initial"},
    layout=widgets.Layout(width="320px")
)
ip_to_inp = widgets.Text(
    value="none",
    description="IP To:",
    style={"description_width": "initial"},
    layout=widgets.Layout(width="320px")
)

# 定义提交按钮
submit_btn = widgets.Button(
    description="Submit",
    button_style="success",
    icon="check",
    layout=widgets.Layout(width="100px", margin="10px 0")
)

# 定义结果输出区域
result_area = widgets.Output()

# 编写提交事件触发逻辑
def handle_submit(btn):
    result_area.clear_output()
    with result_area:
        # 读取所有输入参数
        inp_type = type_sel.value
        inp_ip_from = ip_from_inp.value
        inp_ip_to = ip_to_inp.value

        # 以下替换为你的业务逻辑,比如参数校验、数据查询、任务触发等
        print("=== 提交成功,已获取输入参数 ===")
        print(f"查询类型: {inp_type}")
        print(f"起始IP: {inp_ip_from}")
        print(f"结束IP: {inp_ip_to}")

        # 如果需要把参数同步给dbutils供后续其他单元格调用,执行以下赋值
        dbutils.widgets.set("inp_type", inp_type)
        dbutils.widgets.set("inp_ip_from", inp_ip_from)
        dbutils.widgets.set("inp_ip_to", inp_ip_to)

# 绑定按钮点击事件
submit_btn.on_click(handle_submit)

# 按顺序渲染所有组件
display(widgets.VBox([
    type_sel,
    ip_from_inp,
    ip_to_inp,
    submit_btn,
    result_area
]))

交互说明

  • 渲染完成后修改下拉框、输入框内容不会触发任何逻辑,只有点击Submit按钮才会执行handle_submit函数内的业务代码,和你提供的参考界面交互完全一致。
  • 如果你不想依赖ipywidgets,也可以用原生dbutils做折中实现:额外新增一个下拉框作为提交触发标记,在代码里判断该标记值符合条件时才执行业务逻辑,但这种方式交互生硬,没有原生按钮点击的体验,不推荐使用。

参考界面效果:
界面示例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:46:34