2016-10-07 8 views
0

Kann mir bitte jemand sagen, wie man die im Widget 'Auswählen' ausgewählte Option erfasst. Ich habe Folgendes versucht und erwartet, dass wenn ich die Auswahl im Dropdown-Menü ändere, sollte es die neu gewählte Option drucken. Aber es passiert nicht.Es konnte kein Auswahlereignis in Bokeh ausgelöst werden.

from bokeh.models.widgets import Select 
from bokeh.io import output_notebook, show, vform 
from bokeh.models import CustomJS 

output_notebook() 
states=['VA','MD','SC'] 

select = Select(title="Select State:", value="VA", options=states) 

show(vform(select)) 

def call(attr,old,new): 
    print new 

select.on_change('value',select,call) 

Antwort

0

Sie rufen on_change falsch an. Es dauert: der Name der Eigenschaft, auf die reagiert werden soll, und der Rückruf. Sie müssen das Objekt nicht übergeben, da on_change bereits eine Methode für das Objekt ist. Sie wollen:

select.on_change('value', call) 

Auch werde ich vorschlagen, dass unzweideutig eine gute Idee ist und fast immer effizienter zu versuchen und ein funktionierendes Beispiel starten aus, zu finden und dann experimentieren mit, dass Datei an Ihre Bedürfnisse anpassen. Die Autoren der Bibliothek haben hart daran gearbeitet, dem GitHub-Repo viele Beispiele hinzuzufügen, damit Benutzer von ihnen lernen können. Einige von ihnen zeigen funktionierende Select Widgets. Hier ist eine insbesondere:

https://github.com/bokeh/bokeh/blob/master/examples/app/stocks/main.py

Als beiseite, ich bin überrascht, eigentlich der on_change Anruf nicht mit einem Fehler sofort nicht umfallen, so, wie Sie es haben. Bitte denken Sie über einen Beitrag nach, indem Sie ein GitHub-Problem machen, um eine bessere Validierung vorzuschlagen.

+0

Ich versuchte mit 'select.on_change (' Wert ', Anruf)' auch. Die Funktion 'call' (die zuvor definiert wurde) wird jedoch nicht ausgelöst. Ich bekomme keinen Fehler, aber das Ereignis wird auch nicht ausgelöst. Müssen wir irgendetwas auf unserer Maschine einrichten, um diese Interaktionen zu erhalten (wie Bokeh Server) –

+0

Es ist immer eine gute Idee, so viele relevante Details wie möglich zu geben, einschließlich, wie Sie tatsächlich versuchen, Dinge auszuführen. In diesem Fall habe ich angenommen, dass Sie den Bokeh-Server benutzen, und wenn Sie wussten, dass Sie nicht von Anfang an dabei waren, hätten Sie Zeit gespart. Ja, Sie müssen 'bokeh serve myapp.py' ausführen, um' on_change' Callbacks verwenden zu können. Es gibt eine Menge Dokumentation über das Ausführen eines Bokeh-Aufschlags: http://bokeh.pydata.org/en/latest/docs/user_guide/server.html – bigreddot

Verwandte Themen