if 语句不适用于 python 小部件
if statment not working with python widget
我正在开发一个 Jupyter Notebook
,我正在使用以下代码在 python 中创建一个 tab widget
:
import ipywidgets as widgets
tab_contents = ['P0', 'P1']
children = [widgets.Text(description=name) for name in tab_contents]
tab = widgets.Tab()
tab.children = children
for i in range(len(children)):
tab.set_title(i, str(i))
if tab.selected_index ==0:
vartest = 0
else:
vartest = 1
display(tab)
在不同的单元格中,我通过调用它来检查 vartest 的值
vartest
问题是,独立于我选择的选项卡,vartest 始终为 0。我想要的是,当我在选项卡 P0
(tab.selected_index ==0
)中时,vartest 应该为 0,当我在 P1
(tab.selected_index ==1
) vartest 应该是 1.
我错过了什么?
-- 编辑 --
您在 if 语句中设置 vartest
的值,而没有声明 vartest
"globally"(即在 if 语句之前)
因此,vartest
变量仅存在于 if 块中,之后不可用。
当您调用它时,它是零,因为这是由 python 指定的默认值。
修复:在 if 语句
之前声明 vartest
你需要设置一个observe
来动态改变变量的值:
import ipywidgets as widgets
tab_contents = ['P0', 'P1']
children = [widgets.Text(description=name) for name in tab_contents]
tab = widgets.Tab()
tab.children = children
for i in range(len(children)):
tab.set_title(i, str(i))
def tab_toggle_var(*args):
global vartest
if tab.selected_index ==0:
vartest = 0
else:
vartest = 1
tab.observe(tab_toggle_var)
tab_toggle_var()
display(tab)
我正在开发一个 Jupyter Notebook
,我正在使用以下代码在 python 中创建一个 tab widget
:
import ipywidgets as widgets
tab_contents = ['P0', 'P1']
children = [widgets.Text(description=name) for name in tab_contents]
tab = widgets.Tab()
tab.children = children
for i in range(len(children)):
tab.set_title(i, str(i))
if tab.selected_index ==0:
vartest = 0
else:
vartest = 1
display(tab)
在不同的单元格中,我通过调用它来检查 vartest 的值
vartest
问题是,独立于我选择的选项卡,vartest 始终为 0。我想要的是,当我在选项卡 P0
(tab.selected_index ==0
)中时,vartest 应该为 0,当我在 P1
(tab.selected_index ==1
) vartest 应该是 1.
我错过了什么?
-- 编辑 --
您在 if 语句中设置 vartest
的值,而没有声明 vartest
"globally"(即在 if 语句之前)
因此,vartest
变量仅存在于 if 块中,之后不可用。
当您调用它时,它是零,因为这是由 python 指定的默认值。 修复:在 if 语句
之前声明vartest
你需要设置一个observe
来动态改变变量的值:
import ipywidgets as widgets
tab_contents = ['P0', 'P1']
children = [widgets.Text(description=name) for name in tab_contents]
tab = widgets.Tab()
tab.children = children
for i in range(len(children)):
tab.set_title(i, str(i))
def tab_toggle_var(*args):
global vartest
if tab.selected_index ==0:
vartest = 0
else:
vartest = 1
tab.observe(tab_toggle_var)
tab_toggle_var()
display(tab)