2017-08-24 73 views
2

我正在使用IPython模块在Jupyter笔记本上工作,并且我试图同时显示小部件和Markdown格式的文本。但是,在显示小部件之前,我无法显示文本。下面的代码片段,例如:IPython显示总是在文本/降价前显示小部件

import ipywidgets as widgets 
from IPython.display import display, Markdown 

display(Markdown("## Enter your name")) 
name = widgets.Text(description="Enter your name: ") 
display(name) 

显示this output,即使我问显示控件前显示降价。我如何强制Jupyter笔记本以我想要的顺序显示?

+1

欢迎来到Stack Overflow。 请注意,在这里说'谢谢'的首选方式是通过 提高投票的好问题和有用的答案(一旦你有足够的声誉这样做),并接受任何 问题最有用的答案,你问(这也给你一个小小的提升,以你的声望 )。 请参阅[关于]页面以及[如何在此提问 ?](https://stackoverflow.com/help/how-to-ask) –

回答

1

我相信这个bug已经在ipywidgets的最新版本7中修复了。更新到7.0后尝试使用相同的代码。您可以使用以下命令进行升级(假设您正在anaconda上运行)。

conda install -c conda-forge ipywidgets 

如果它仍然不适合你尝试使用dominate和HTML小部件。首先从命令行安装主导,pip install dominate然后你可以运行以下;

import ipywidgets as widgets 
from dominate import tags 
from IPython.display import display 

header = widgets.HTML(tags.h2("Enter your name").render()) 
name = widgets.Text(description="Enter your name: ") 

display(header, name) 

对于这里的改进的布局是从上方与HBoxLabel部件相同的代码;

import ipywidgets as widgets 
from dominate import tags 
from IPython.display import display 

header = widgets.HTML(tags.h3("Enter your name").render()) 
name = widgets.Text() 
namebox = widgets.HBox([widgets.Label("Enter your name: "), name]) 

display(header, namebox) 
+0

这可以帮助我很多!谢谢! –