在使用Bokeh 1.4.0的Python 3.7上,我注意到当我使用按钮运行一个函数来更改页面上的文本,然后运行一些代码时,直到整个函数运行完毕,文本才会改变。这是一个示例,您希望文本立即更改,但是直到time.sleep()完成后它才会更改。这是我从jupyter笔记本启动的示例片段:
import time
from bokeh.models.widgets import Div
from bokeh.layouts import layout
from bokeh.models.widgets import Button
from bokeh.server.server import Server
from bokeh.application import Application
from bokeh.application.handlers.function import FunctionHandler
def make_document(doc):
bokeh_text=Div(text="")
test_button=Button(label='TEST',button_type="success")
def test():
bokeh_text.text = "Text has been changed"
time.sleep(3)
test_button.on_click(test)
my_layout=layout([test_button,bokeh_text])
doc.add_root(my_layout)
import numpy as np
apps = {'/': Application(FunctionHandler(make_document))}
server = Server(apps)
server.io_loop.add_callback(server.show, "/")
可能所有的GUI都这样工作-它们不会立即更新窗口,而是在代码返回到主循环时-然后它只需为所有更改重新绘制窗口一次-因此它的工作量较小,并且窗口不会闪烁。