有可能给jupyter笔记本小部件一个焦点吗?我在代码中看不到文档或提示吗?
我在IPython中使用小部件,该部件允许用户重复搜索短语并在另一个小部件(选择小部件)中查看结果(不同的标题),然后选择其中一个结果。
简而言之:
search_text = widgets.Text(description = 'Search')
search_result = widgets.Select(description = 'Select table')
def search_action(sender):
phrase = search_text.value
df = search(phrase) # A function that returns the results in a pandas df
titles = df['title'].tolist()
search_result.options = titles
search_text.on_submit(search_action)
Run Code Online (Sandbox Code Playgroud)
这曾经可以正常工作,但是在更新到最新版本的ipywidgets(4.0.1的5.1.3)之后,
search_selection.options = titles
Run Code Online (Sandbox Code Playgroud)
产生以下错误(一个或两个,不同):
TraitError: Invalid selection
TypeError: 'list' object is not callable
Run Code Online (Sandbox Code Playgroud)
它仍然可以在某种意义上起作用,即该小部件会根据来自其他小部件的搜索结果来更新结果,但是会出现错误。
根据另一个窗口小部件的结果在一个窗口小部件中设置选项的正确方法是什么?
(编辑:添加了更详细的错误消息)
我在Jupyter笔记本中有一个单选按钮小部件,我想保存选定状态,最好保存在笔记本json中。当我保存笔记本时,这似乎没有发生。重新打开笔记本计算机时,状态会丢失并重置。有没有办法保存状态并重新加载?
如何得到执行的函数的输出on_click由ipywidgets.Button
功能外下一步使用?例如,我想a在每次点击后取回 的值以在 jupyter-notebook 的下一个单元格中使用。到目前为止,我只得到None.
from ipywidgets import Button
def add_num(ex):
a = b+1
print('a = ', a)
return a
b = 1
buttons = Button(description="Load/reload file list")
a = buttons.on_click(add_num)
display(buttons)
print(a)
Run Code Online (Sandbox Code Playgroud) 如何从“ipywidgets”更改用“interact_manual”创建的按钮标签?以及如何更改该按钮的大小和颜色?
这是我写的
from ipywidgets import interact,interact_manual
def HDI_vs_CrimeRate():
#do some thing here
interact_manual(HDI_vs_CrimeRate)
Run Code Online (Sandbox Code Playgroud)
这是按钮的样子: 1 感谢您的帮助
在我的笔记本中,我有一个循环,我想在其中要求用户二进制“是”或“否”。在这个选择上,算法应该继续。
for i in range(n_total):
display.clear_output(wait=True)
waiting_for_scoring = True
print("True or False?")
display.display(widgets.HBox((true_button, false_button)))
a = true_button.on_click(on_true_button)
a = false_button.on_click(on_false_button)
while waiting_for_scoring == True:
#waiting for user input
pass
Run Code Online (Sandbox Code Playgroud)
在小部件 HBox 创建之后,如何使循环等待,并等待用户输入(单击按钮)以继续回答新值?
这是我对按钮的两个功能:
def on_true_button(x):
global waiting_for_scoring
print('NO!!!!')
y_new = 1
waiting_for_scoring = False
return y_new
def on_false_button(x):
global waiting_for_scoring
print('YES')
y_new = 0
waiting_for_scoring = False
return y_new
Run Code Online (Sandbox Code Playgroud)
你能帮我停止循环直到用户按下按钮然后使用这个输入吗?先感谢您
我和 TheInterestedOne在此处提出的问题相同。
我需要为用户创建两个按钮,并建议用户点击循环中的两个按钮之一;以便循环的下一次迭代仅在用户选择之后发生。
我读过这个来源,但我不能让它适用于按钮。我不明白,在使用按钮的情况下,小部件属性如何变化。
from functools import wraps
def yield_for_change(widget, attribute):
def f(iterator):
@wraps(iterator)
def inner():
i = iterator()
def next_i(change):
try:
i.send(change.new)
except StopIteration as e:
widget.unobserve(next_i, attribute)
widget.observe(next_i, attribute) //**button.on_click(on_button_clicked)
may be?**
# start the generator
next(i)
return inner
return f
from ipywidgets import Button
button=Button()
def on_button_clicked():
print("Button clicked.")
@yield_for_change(button, 'value')
def f():
for i in range(10):
print('did work %s'%i)
x = yield
button.on_click(on_button_clicked)
Run Code Online (Sandbox Code Playgroud) 我正在使用 aipywidgets.Label在笔记本中显示文本。基本问题,如何更改文本对齐方式Label?它似乎是左对齐的,我希望它是右对齐的。我确实在文档中寻找过它,但找不到它。
谢谢
在我的笔记本中,我有 7 个 FloatSlider 小部件。我希望始终显示这 7 个小部件的乘积,当用户移动滑块时,显示的值就会更新。目前我正在尝试在 Widgets.Text (n) 中显示 SliderWidgets 的产品,但我不确定这是否是最佳解决方案。
import ipywidgets as widgets
caption = widgets.Label(value='Play around with the variables to see how N changes!')
r = widgets.FloatSlider(value=1,
min=1.0,
max=3.0,
step=0.1,
description="R*")
fp = widgets.FloatSlider(value=1,
min=0.35,
max=1.0,
step=0.05,
description="fp")
ne = widgets.FloatSlider(value=1
min=0.2,
max=3.0,
step=0.1,
description="ne")
fl = widgets.FloatSlider(value=1,
min=1.0,
max=1.3,
step=0.05,
description="fl")
fi = widgets.FloatSlider(value=1,
min=0.5,
max=1.5,
step=0.05,
description="fi")
fc = widgets.FloatSlider(value=0.20,
min=0.10,
max=0.30,
step=0.05,
description="fi",)
l = widgets.FloatSlider(value=60000000.0,
min=5000000.0,
max=1000000000.0,
step=5000000,
description="fi")
n = widgets.Text( …Run Code Online (Sandbox Code Playgroud) 我想在 HBox 布局内显示 IPython.display.HTML 对象(即 html_bt)和小部件(即 bt)。我该如何实现这一目标?有可能吗?或者如何将 html_bt 转换为小部件对象?以下是我的代码:
from ipywidgets import widgets, Layout, HBox
from IPython.display import display, HTML
css_str = '<style>.foo{color:#F00;} )} </style>'
out = widgets.Output()
def OnClick():
with out:
print('QQQ')
html_bt=HTML(css_str + '<button class="button-style" onclick="IPython.notebook.kernel.execute(\'OnClick()\')"> <img src="https://www.fnordware.com/superpng/pnggrad16rgb.png" alt="Snow"></button>')
bt = widgets.Button(
description='Click me',
disabled=False,
button_style='', # 'success', 'info', 'warning', 'danger' or ''
tooltip='Click me',
icon='check' # (FontAwesome names without the `fa-` prefix)
)
h_box = HBox([bt, display(html_bt)])
h_box
Run Code Online (Sandbox Code Playgroud) ipywidgets ×10
python ×6
button ×3
ipython ×3
widget ×2
asynchronous ×1
jupyter ×1
python-3.x ×1