[英]Bokeh - CustomJS data with Python functions to Download data and Alert users
我正在嘗試創建一個散景服務器(使用 Python -m bokeh serve my_pythonfile.py 運行),讓用戶在其中修改一些我想在 CustomJS function 中使用的數據。 我試着在這里做一個我的 class 的簡單例子:
def __init__(self):
self.data = 0
self.click_me = self._get_click_button()
self.save_data = self._get_save_data()
def _get_click_button(self) -> Button:
click_me = Button(label='Add data')
click_me.on_click(self.add_data)
return click_me
def self.add_data(self):
self.data += 1
def _get_save_data(self) -> Button:
save = Button(label='Save data')
callback = CustomJS(args={'data': self.return_data()}, code="""console.log(data);""")
save.js_on_click(callback)
return save
def return_data(self) -> int:
return self.data
當我按下Save data
按鈕時,我總是在控制台中得到 0 ,我明白為什么但我不知道如何獲得self.data
的實際數量,有什么想法/提示嗎?
我想要做的實際事情是讓用戶下載一些數據(json 文件),想到的一種解決方案是使用 html5 關鍵字download
。 在另一種情況下,我想使用alert
關鍵字讓用戶知道他輸入了一些錯誤數據。
Bokeh 服務器和客戶端之間不同步原生int
值。
args={'data': self.return_data()}
本質上是args={'data': 0}
。
要在服務器和客戶端之間同步 object,子類Model
並使用它。
from bokeh.core.properties import Int
from bokeh.models import Model
from bokeh.util.compiler import TypeScript
class MyModel(Model):
__implementation__ = TypeScript("""
import { Model } from "model";
export class MyModel extends Model {
constructor(attrs: any) {
super(attrs);
}
static init_MyModel() {
this.define(({ Int }) => ({
data: [Int, 0] as any,
}));
}
}
""")
data = Int
用法:
def __init__(self):
self.model = MyModel(data=0) # Modified
self.click_me = self._get_click_button()
self.save_data = self._get_save_data()
def _get_click_button(self) -> Button:
click_me = Button(label='Add data')
click_me.on_click(self.add_data)
return click_me
def add_data(self):
self.model.data += 1 # Modified
def _get_save_data(self) -> Button:
save = Button(label='Save data')
callback = CustomJS(args={'model': self.model}, code="""console.log(model.data);""") # Modified
save.js_on_click(callback)
return save
# def return_data(self) -> int: # Removed
# return self.data # Removed
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.