У меня есть следующий простой пример с боке. Кнопка запуска запускает бесконечный цикл while в подпрограмме, который должен прекратиться, как только будет нажата кнопка 3 или флажок снят. Button2 проверяет состояние без цикла, который работает нормально. Так как button3 и флажок cb определены в основном, подпрограмма, вызываемая button1, не распознает изменения. Есть ли способ решить это?
Я использовал боке версии 1.0.1. Вы можете запустить пример локально с помощью bokeh serve script.py
и просмотреть его в своем браузере (http://localhost:5006).
from bokeh.models import Column
from bokeh.plotting import curdoc
from bokeh.models.widgets import Button, Toggle, CheckboxGroup
import time
def start_loop():
while (not button3.active) and (len(cb.active)):
time.sleep(1)
print(button3.active)
print(cb.active)
def check_status():
print(button3.active)
print(cb.active)
button1 = Button(label = "start")
button1.on_click(start_loop)
button2 = Button(label = "check status")
button2.on_click(check_status)
button3 = Toggle(label="stop")
cb = CheckboxGroup(labels=['stop'],active=[0])
curdoc().add_root(Column(button1,button2,button3,cb))