ipywidgets: Update one widget based on results from another
<p>I am using widgets in IPython that allows the user to repeatedly search for a phrase and see the results (different titles) in another widget (a selection widget) and then select one of the results.</p>

<p>In short:</p>

<pre><code>search_text = widgets.Text(description = 'Search') 
search_result = widgets.Select(description = 'Select table')

def search_action(sender):
    phrase = search_text.value
    df = search(phrase) # A function that returns the results in a pandas df
    titles = df['title'].tolist()
    search_result.options = titles

search_text.on_submit(search_action)
</code></pre>

<p>This used to work fine, but after updating to the latest version of ipywidgets (5.1.3 from 4.0.1) it seems like</p>

<pre><code>search_selection.options = titles
</code></pre>

<p>Produce the following errors (one or both, it varies):</p>

<pre><code>TraitError: Invalid selection
TypeError: 'list' object is not callable
</code></pre>

<p>It still works in the sense that the widget gets updated with the results based on the search from the other widget, but it gives an error. </p>

<p>What is the correct way of setting the options in one widget based on the results from another widget?</p>

<p>(edit: added more detailed error message)</p>