diff --git a/IPython/html/widgets/interaction.py b/IPython/html/widgets/interaction.py
index 93b6e7c..0355356 100644
--- a/IPython/html/widgets/interaction.py
+++ b/IPython/html/widgets/interaction.py
@@ -210,6 +210,8 @@ def interactive(__interact_f, **kwargs):
container.kwargs[widget.description] = value
if co:
clear_output(wait=True)
+ if on_demand:
+ on_demand_button.disabled = True
try:
container.result = f(**container.kwargs)
except Exception as e:
@@ -218,6 +220,9 @@ def interactive(__interact_f, **kwargs):
container.log.warn("Exception in interact callback: %s", e, exc_info=True)
else:
ip.showtraceback()
+ finally:
+ if on_demand:
+ on_demand_button.disabled = False
# Wire up the widgets
# If we are doing on demand running, the callback is only triggered by the button