我想創建一個不使用JavaScript的自定義散景小部件,即不需要在Adding A Custom Widget上查看散景文檔。下面的例子演示了在PyQt4中創建一個自定義小部件(我使用了很多),以及我期望在散景中工作以及我得到的錯誤消息。在沒有JavaScript的情況下添加一個自定義的python散景小部件
有沒有其他方法可以在不使用JavaScript的情況下在散景中創建自定義小部件?具體而言,我試圖創建一個自定義滑塊,在每一側使用小鍵和+鍵來增加/減少滑塊1步。我想在許多應用程序中使用此自定義小部件,所以我希望將它定義爲自己的類,並將on_change方法鏈接到滑塊on_change方法。還有其他我想製作的自定義小部件(無JS!),我想知道這是否可能。
# this works as a base to develop custom PyQt4 widgets
from PyQt4 import QtGui
import sys
class NewWidget(QtGui.QWidget):
def __init__(self):
super().__init__()
app = QtGui.QApplication([])
widget = NewWidget()
widget.show()
sys.exit(app.exec_())
# this does not work as a base to develop custom bokeh widgets
# when run, a tab opens with the message
# Bokeh Error
# Model `NewWidget' does not exist. This could be due to a widget
# or a custom model not being registered before first usage.
from bokeh.plotting import show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Widget
class NewWidget(Widget):
def __init__(self):
super().__init__()
new = NewWidget()
show(widgetbox(new))
UPDATE:具體的自定義的widget我試圖創建是每邊的按鈕滑塊(上標左「 - 」,右邊標有「+」),通過改變滑塊值1步。這用於微調Slider的值,因此不需要鼠標精確地達到目標值。我通過鏈接默認的Slider和Button對象創建了這個自定義小部件,它在瀏覽器中呈現,但回調函數不起作用(特別是Slider'on_change'方法)。
這是自定義部件率直,背景虛化和JS來實現?有沒有一個在線參考可以提供提示而不會深入到JS中。
'.on_change'需要一個背景虛化服務器(這就是蟒蛇的回調被執行)你說這不適用於服務器應用程序?或者這不在服務器應用程序的上下文中?在任何情況下,它似乎都應該可以通過一行或兩行JS和'.js_on_change'回調來實現:http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks。html#customjs-for-generic-events不需要服務器 – bigreddot
對於特別的按鈕,你實際上仍然希望使用'callback'屬性來設置一個'CustomJS'回調。見下面 – bigreddot