2017-08-24 1 views
2

Ich arbeite an einem Projekt auf dem Jupyter Notebook mit dem IPython-Modul, und ich versuche, Widgets und Markdown-formatierten Text zur gleichen Zeit anzuzeigen. Ich kann jedoch keinen Text anzeigen, bevor die Widgets angezeigt werden. Der folgende Codeausschnitt, zum Beispiel:IPython-Display zeigt immer Widgets vor Text/Markdown

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

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

Displays this output, obwohl ich vor der Anzeige das Widgets den Abschlag anzuzeigen gefragt. Wie kann ich Jupyter Notebook zwingen, in der von mir gewünschten Reihenfolge anzuzeigen?

+1

Willkommen bei Stack Overflow. Bitte beachten Sie, dass die bevorzugte Art zu sagen "Danke" hier ist durch Up-Voting gute Fragen und hilfreiche Antworten (sobald Sie genug Ruf zu tun haben), und durch die Annahme der hilfreichsten Antwort auf alle Fragen Sie fragen (Das gibt Ihnen auch einen kleinen Schub für Ihre Ruf). Bitte lesen Sie die [Über] Seite und auch [Wie stelle ich Fragen? hier?] (Https://stackoverflow.com/help/how-to-ask) –

Antwort

1

Ich glaube, dass dieser Fehler in der neuesten Version 7 von ipywidgets behoben wurde. Versuchen Sie den gleichen Code nach dem Update auf 7.0. Sie können mit dem folgenden Befehl aktualisieren (vorausgesetzt, Sie laufen auf Anakonda).

conda install -c conda-forge ipywidgets 

Wenn es nach wie vor für Sie mit dominate und dem HTML-Widget versuchen nicht funktioniert. Erst installieren dominieren von der Kommandozeile, pip install dominate dann können Sie Folgendes ausführen;

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) 

Für ein verbessertes Layout hier ist der gleiche Code von oben mit den HBox und Label Widgets;

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

Das hilft mir sehr! Vielen Dank! –