Comment saisir la valeur de la liste déroulante widget dans le bokeh python?
La documentation officielle de bokeh 0.12.1 dans le lien donner le code ci-dessous pour la création d'une liste déroulante.
Mais sa ne pas mentionner clairement comment capturer la valeur de la liste déroulante du widget lorsque quelqu'un cliquez et sélectionne une valeur dans la liste déroulante.
from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown
output_file("dropdown.html")
menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)
show(widgetbox(dropdown))
Question
C'est de voir qu'il y a 2 méthodes appelées on_click() & on_change (), mais à partir de la documentation ne pouvais pas comprendre comment capter la valeur.
Comment pouvons-nous assigner la valeur d'une variable?
MODIFIER
Basé sur les commentaires de @Ascurion j'ai mis à jour mon code comme indiqué ci-dessous. Mais lorsque je sélectionne une valeur dans la liste déroulante rien n'est imprimé dans ipython console en Spyder.
Veuillez informer.
from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown
output_file("dropdown.html")
menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)
def function_to_call(attr, old, new):
print dropdown.value
dropdown.on_change('value', function_to_call)
dropdown.on_click(function_to_call)
show(widgetbox(dropdown))
OriginalL'auteur GeorgeOfTheRF | 2016-08-23
Vous devez vous connecter pour publier un commentaire.
Si vous définissez on_change par exemple comme suit:
on peut accéder à la valeur de l'élément sélectionné dans
function_to_call
comme suit:Pour que cela fonctionne déroulante doit être défini avant function_to_call.
La documentation sur la façon d'accéder aux valeurs définies dans les widgets avec on_click et on_change (bokeh de la version 12.1) peut être trouvé ici, en haut de la page:
http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/widgets.html
MODIFIER
Pour obtenir de l'information interactive vous devez exécuter bokeh en mode serveur, de sorte que le code python peut être évaluée lorsque vous interagissez avec un widget. J'ai changé votre exemple légèrement pour permettre à exécuter avec l'
de commande. Le code ci-dessous affiche l'élément sélectionné dans le terminal.
Voir ici pour plus d'informations:
http://bokeh.pydata.org/en/latest/docs/user_guide/server.html
Quelles valeurs pour l'attribut, vieux, nouveau devrait être adopté lors de la function_to_call() est appelée? Veuillez expliquer le sens de ces attributs.
Salut désolé de ma mauvaise que vous avez à donner à la fonction à appeler avec des arguments et des paranthesis à on_change... mais la fonction à appeler besoins les trois variables (attr, ancien, nouveau). J'ai corrigé ma réponse en conséquence
Pour ajouter plus de contexte:
attr
est le nom de l'attribut qui a changé,old
est l'ancienne valeur (avant qu'il a été modifié), etnew
est la nouvelle valeur. Mais comme vous le prouver, si le widget est disponible en tant que global, il est souvent tout aussi facile de lire la valeur actuelle désactiver le widget lui-même.curdoc() est une fonction qui retourne l'état courant de Document de la page. Un Document est en principe le python de la représentation de l'html/css/javascript d'une page créée par le Bokeh c'est que montré dans le navigateur. Le add_root(liste déroulante) ajoute le widget déroulant à cette page. Il existe des possibilités de style de la page avec des éléments de mise en page tels que les lignes et les colonnes etc. Lors de l'exécution avec les
bokeh serve
commande le serveur prend en charge pour servir de ce document. Je dois dire que je ne comprends pas la mise en œuvre détaillée, veuillez vérifier ici aussi bokeh.pydata.org/en/latest/docs/user_guide/server.htmlOriginalL'auteur Ascurion