如何更改使用 'interact_manual' 创建的按钮标签而不是 'ipywidgets'?以及如何更改该按钮的大小和颜色?

How do I change a button label created with 'interact_manual' from 'ipywidgets'? and how do I change the size and color of that button?

如何更改使用 'interact_manual' 创建的按钮标签而不是 'ipywidgets'?以及如何更改该按钮的大小和颜色?

这是我写的

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

按钮的外观如下: 1 感谢您的帮助

您可能需要升级您的ipywidgets;对我来说,你的代码 returns 一个带有标签 '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'.

更改按钮文本的首选方式(截至 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 changelog中提到。

通过使用装饰器:

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

如果使用 ipywidgets.interactive,将“运行 互动”更改为其他内容:

import datetime as dt
doit = lambda: print(dt.datetime.now())
w = widgets.interactive(doit, {'manual': True, "manual_name": "Refresh"})
display(w)