2017-08-24 91 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

這可以幫助我很多!謝謝! –