Python 使用widget2(ipywidgets)中断widget1_处理程序
以下代码旨在代表我正在处理的问题:Python 使用widget2(ipywidgets)中断widget1_处理程序,python,jupyter-notebook,ipywidgets,Python,Jupyter Notebook,Ipywidgets,以下代码旨在代表我正在处理的问题: import ipywidgets as widgets from IPython.display import display a = widgets.ToggleButton( value=False, description='start', disabled=False, icon='' ) b = widgets.ToggleButton( value=False, description='sto
import ipywidgets as widgets
from IPython.display import display
a = widgets.ToggleButton(
value=False,
description='start',
disabled=False,
icon=''
)
b = widgets.ToggleButton(
value=False,
description='stop',
disabled=True,
icon=''
)
def func1(change):
if change['new'] is True:
a.disabled = True
b.disabled = False
for i in range(1000000):
if b.value is False:
print(i)
elif b.value is True:
break
a.observe(func1, 'value')
display(widgets.VBox([a, b]))
我想做的是,通过单击b
,打破在单击a
时启动的for循环。上面的代码不起作用,我似乎在别处找不到类似的问题/解决方案。似乎b。即使单击b
,for循环的值也不会更新
有什么我遗漏的吗?还有别的办法吗?感谢您的帮助 改编自。您将需要使用一个线程,以便在一个循环运行时更改其他小部件
将IPyWidget作为小部件导入
从IPython.display导入显示
导入时间
a=widgets.ToggleButton(
值=False,
description='start',
禁用=错误,
图标=“”
)
b=widgets.ToggleButton(
值=False,
description='stop',
disabled=真,
图标=“”
)
定义工作():
a、 禁用=真
b、 禁用=错误
对于范围内的i(1000000):
时间。睡眠(1)
如果b.value为False:
印刷品(一)
如果b.value为真:
打破
def func1(更改):
如果更改['new']为真:
线程=线程。线程(目标=工作)
thread.start()
a、 观察(功能1,“值”)
显示(widgets.VBox([a,b]))
改编自。您将需要使用一个线程,以便在一个循环运行时更改其他小部件
将IPyWidget作为小部件导入
从IPython.display导入显示
导入时间
a=widgets.ToggleButton(
值=False,
description='start',
禁用=错误,
图标=“”
)
b=widgets.ToggleButton(
值=False,
description='stop',
disabled=真,
图标=“”
)
定义工作():
a、 禁用=真
b、 禁用=错误
对于范围内的i(1000000):
时间。睡眠(1)
如果b.value为False:
印刷品(一)
如果b.value为真:
打破
def func1(更改):
如果更改['new']为真:
线程=线程。线程(目标=工作)
thread.start()
a、 观察(功能1,“值”)
显示(widgets.VBox([a,b]))