我正在使用 ipyvuetify 創建一個包含多個按鈕的儀表板。
這里是其中之一的代碼:
import ipyvuetify as vue
from ipywidgets import Output
out = Output()
mybtn = vue.Btn(color='primary', children=['Run'])
def btn_method(widget, event, data):
with out:
print('btn was clicked')
mybtn.on_event('click', btn_method)
display(mybtn,out)
我的問題是,當單擊按鈕時,執行的操作取決于一些變數。問題是如何向按鈕發送額外資料,即資料字典。
偽代碼:
import ipyvuetify as vue
from ipywidgets import Output
out = Output()
mybtn = vue.Btn(color='primary', children=['Run'])
# t followoing does not work, nor it gives an error:
def btn_method(widget, event, data, **kwargs):
with out:
print('btn was clicked')
print(len(kwargs))
if myvar==4:
#do this
pass
else:
#do that
pass
mybtn.on_event('click', btn_method, kwargs={'myvar':4})
display(mybtn,out)
當然錯誤是:on_event() 得到了一個意外的關鍵字引數“kwargs”,即你不應該將其他變數發送到 on_event 方法中。
知道如何進行嗎?
謝謝
uj5u.com熱心網友回復:
您可以簡單地將字典設定為按鈕物件的附加屬性,并在回呼函式中讀取它。
mybtn = vue.Btn(color='primary', children=['Run'])
def btn_method(widget, event, data):
with out:
print('btn was clicked')
print(widget.kwargs)
if widget.kwargs['myvar']==4:
#do this
pass
else:
#do that
pass
mybtn.on_event('click', btn_method)
mybtn.kwargs={'myvar':4}
uj5u.com熱心網友回復:
一種可能性是使用動態functools.partial創建一個新的回呼函式,它已經定義了您想要傳遞的額外引數:
import functools
def btn_method(widget, event, data, **kwargs):
with out:
print('btn was clicked')
print(len(kwargs))
if kwargs.get("myvar")==4:
#do this
pass
else:
#do that
pass
mybtn.on_event('click', functools.partial(btn_method, myvar=4))
(未經測驗的代碼)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/409359.html
標籤:
上一篇:在按鈕內居中SVG圖示
下一篇:如何創建按鈕的延長線
