Bokeh on_click函数仅在整个函数完成后才更改文本

问题描述 投票:1回答:1

在使用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, "/")

Here it is with time.sleep(3)

Here is it without time.sleep()

python bokeh
1个回答
0
投票

可能所有的GUI都这样工作-它们不会立即更新窗口,而是在代码返回到主循环时-然后它只需为所有更改重新绘制窗口一次-因此它的工作量较小,并且窗口不会闪烁。

© www.soinside.com 2019 - 2024. All rights reserved.