2017-08-24 3 views
2

Je travaille sur un projet sur l'ordinateur portable à l'aide du module Jupyter IPython, et je suis en train d'afficher des widgets et Markdown formaté en même temps. Cependant, je suis incapable d'afficher du texte avant d'afficher les widgets. L'extrait de code suivant, par exemple:écran affiche toujours IPython widgets avant le texte/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) 

affiche this output, même si je demandé d'afficher le démarquage avant d'afficher le widget. Comment puis-je forcer Jupyter Notebook à afficher dans l'ordre que je veux?

+1

Bienvenue dans Stack Overflow. S'il vous plaît noter que la façon préférée de dire «merci» ici est par de bonnes questions et des réponses utiles (une fois que vous avez assez de réputation pour le faire), et en acceptant la réponse la plus utile à toute question (qui vous donne également un petit coup de pouce à votre réputation). S'il vous plaît voir le [A propos de] la page et aussi [Comment puis-je poser des questions ici?] (Https://stackoverflow.com/help/how-to-ask) –

Répondre

1

Je crois que ce bug a été corrigé dans la dernière version 7 de ipywidgets. Essayez le même code après la mise à jour vers la version 7.0. Vous pouvez mettre à jour avec la commande suivante (en supposant que vous utilisez anaconda).

conda install -c conda-forge ipywidgets 

Si cela ne fonctionne toujours pas pour vous essayez d'utiliser dominate et le widget HTML. Première installation dominer à partir de la ligne de commande, pip install dominate puis vous pouvez exécuter ce qui suit;

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) 

Pour une mise en page améliorée est ici le même code d'en haut avec les HBox et 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

Cela me aide beaucoup! Je vous remercie! –