title: ipywidgets: Update one widget based on results from another
body: <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>