如何更改使用“interact_manual”从“ipywidgets”创建的按钮标签?如何更改该按钮的大小和颜色?

问题描述 投票:0回答:4

如何更改使用“interact_manual”从“ipywidgets”创建的按钮标签?如何更改该按钮的大小和颜色?

这是我写的

from ipywidgets import interact,interact_manual
def HDI_vs_CrimeRate():
    #do some thing here
interact_manual(HDI_vs_CrimeRate)

按钮的外观如下:

Screenshot of resulting button

感谢您的帮助

python button jupyter-notebook ipywidgets
4个回答
12
投票

您可能需要升级您的 ipywidgets;对我来说,您的代码返回一个带有标签“Run Interact”的按钮,这比您的好一点,但还不是您想要的。

将您的interact_manual分配给一个变量,更改子小部件的描述文本,然后在您的交互上调用display()。这似乎可以完成工作,尽管可能有更优雅的方式。

from ipywidgets import interact, interact_manual
def HDI_vs_CrimeRate():
    #do some thing here
im = interact_manual(HDI_vs_CrimeRate)
im.widget.children[0].description = 'changed'
display(im)

编辑:对于颜色,您可以使用 im.widget.children[0].style.button_color = 'red'。


7
投票

更改按钮文本的首选方式(截至 2021 年 3 月)可能是通过

options
:

from ipywidgets import interact_manual
def HDI_vs_CrimeRate():
    return ...  # Do something here
my_interact_manual = interact_manual.options(manual_name="changed")
my_interact_manual(HDI_vs_CrimeRate);

这方面的文档有点匮乏,仅在 7.2 版本的 ipywidgets 变更日志中提到过。


1
投票

通过使用装饰器:

from ipywidgets import interact, interact_manual
x=widgets.interact_manual.options(manual_name="changed")
@x
def HDI_vs_CrimeRate():
    pass

1
投票

如果使用

ipywidgets.interactive
,从“运行交互”更改为其他内容:

import datetime as dt
doit = lambda: print(dt.datetime.now())
w = widgets.interactive(doit, {'manual': True, "manual_name": "Refresh"})
display(w)
© www.soinside.com 2019 - 2024. All rights reserved.