Я пытаюсь выяснить что-то, на первый взгляд, простое: пользователь вводит текст, используя TextInput, и мы динамически обновляем отображаемый график.
data - график networkx;график представляет собой подграф, сосредоточенный вокруг узла пользовательского ввода.Я хочу избегать предоставления пользователю меню выбора узлов для выбора, потому что их много.
Самое близкое, что я могу найти в качестве решения, это: Боке: Показать пользовательский ввод текста но здесь вы не сохраняете и позже ссылаетесь на то, что пользователь ввел.Вы отображаете только то, что пользователь только что ввел в TextInput.
У меня есть функция, которая принимает узел в качестве входных данных и выбрасывает нужный мне график:
def my_plot (node): # сделать графиксюжет возврата объекта
show (my_plot ('NodeA'))
возвращает то, что я хочу.Я пытаюсь сделать выбор NodeA динамическим.
def my_doc (doc):
ti = TextInput(value = 'NodeA', title='Enter node')
nd = 'A'
# Default
plot = my_plot(nd)
def callback(attr, old, new):
if ti.value != '':
plot = my_plot(new)
# tried ti.value here, no change
else:
print('Will develop better error messages later')
ti.on_change('value', callback)
layout = column(widgetbox(ti),plot)
doc.add_root(layout)
show (my_doc) приводит к графику по умолчанию, показанному с введенным выше текстом, но то, что выввод просто не влияет ни на что
Я пытался сохранить новое значение внутри обратного вызова с помощью nd = new # или ti.value, но затем print (nd) просто печатает 'A' по умолчанию
Это не похоже на то, что TextInput хранится или на него можно ссылаться за пределами обратного вызова.