首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PyViz中使用带有回调的切换按钮(在类中)?

如何在PyViz中使用带有回调的切换按钮(在类中)?
EN

Stack Overflow用户
提问于 2019-03-27 03:18:24
回答 1查看 403关注 0票数 0

我在笔记本中使用PyViz /面板。现在我想在一个类中使用一个切换按钮,并将一个回调绑定到它。

这段代码--在类之外--是有效的:

代码语言:javascript
复制
import panel as pn
import panel.widgets as pnw
pn.extension()

toggle = pn.widgets.Toggle(name='Toggle')

def callback(*events):
    if toggle.active is True: toggle.name = 'Active'
    else: toggle.name = 'Toggle'

watcher = toggle.param.watch(callback, 'active')
toggle.param.set_param(active=False)
toggle.param.trigger('active')

pn.Row(toggle)

它会产生一个切换按钮,当单击时,文本会发生变化。

不,我试着把所有东西都放在一个类定义中:

代码语言:javascript
复制
class ToggleInClass():
    def __init__(self):
        self.toggle = pn.widgets.Toggle(name='Toggle')
        self.watcher = self.toggle.param.watch(callback, 'active')
        self.toggle.param.set_param(active=False)
        self.toggle.param.trigger('active')

    def callback(self, *events):
        if toggle.active is True: toggle.name = 'Active'
        else: toggle.name = 'Toggle'

toggle_in_class = ToggleInClass()
pn.Row(toggle_in_class.toggle)

再次生成一个按钮,但这一次回调似乎不起作用:文本永远不会改变。

观察者似乎没问题:toggle_in_class.watcher给了Watcher(inst=Toggle(), cls=<class 'panel.widgets.Toggle'>, fn=<function callback at 0x000001EC8419E510>, mode='args', onlychanged=True, parameter_names=('active',))

toggle_in_class.toggle.active的输出根据切换状态交替。

我的回调/类定义有什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-31 03:18:42

在纠正了一些愚蠢的拼写错误之后,这段代码对我来说是有效的:

代码语言:javascript
复制
class ToggleInClass():

    def __init__(self):
        self.toggle = pn.widgets.Toggle(name='Toggle')
        self.watcher = self.toggle.param.watch(self.callback, 'active')
        self.toggle.param.set_param(active=False)

    def callback(self, *events):
        if self.toggle.active is True: self.toggle.name = 'Active'
        else: self.toggle.name = 'Toggle'

toggle_in_class = ToggleInClass()
pn.Row(toggle_in_class.toggle)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55364751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档