diff --git a/IPython/html/widgets/__init__.py b/IPython/html/widgets/__init__.py
index 9480d95b5..cb474206b 100644
--- a/IPython/html/widgets/__init__.py
+++ b/IPython/html/widgets/__init__.py
@@ -24,6 +24,15 @@ from .widget_selection import RadioButtonsWidget, ToggleButtonsWidget, DropdownW
from .widget_selectioncontainer import TabWidget, AccordionWidget
from .widget_string import HTMLWidget, LatexWidget, TextWidget, TextareaWidget
-# Warn on import
-from warnings import warn
-warn("IPython widgets are experimental and may change in the future.", FutureWarning, stacklevel=2)
+# We use warn_explicit so we have very brief messages without file or line numbers.
+# The concern is that file or line numbers will confuse the interactive user.
+# To ignore this warning, do:
+#
+# from warnings import filterwarnings
+# filterwarnings('ignore', module='IPython.html.widgets')
+
+from warnings import warn_explicit
+__warningregistry__ = {}
+warn_explicit("IPython widgets are experimental and may change in the future.",
+ FutureWarning, '', 0, module = 'IPython.html.widgets',
+ registry = __warningregistry__, module_globals = globals)