#!/usr/bin/env python # -*- coding: utf-8 -*- # # Scratch dans un notebook # # Il existe une version javascript de Scratch : [snap](http://snap.berkeley.edu/snapsource/snap.html). On peut récupérer les sources soit depuis le site, soit depuis github [jmoenig/Snap--Build-Your-Own-Blocks](https://github.com/jmoenig/Snap--Build-Your-Own-Blocks) (il y a un peu plus d'images, de personnages). J'ai recopié les sources dans le module [code_beatrix](https://pypi.python.org/pypi/code_beatrix/0.5.59). Voici un exemple qui montre comment faire apparaître une interface Snap depuis un notebook Jupyter. Tout d'abord, il faut recopier le code javascript dans un répertoire de Jupyter afin que le serveur local puisse les trouver. # In[1]: import code_beatrix.jsscripts.snap get_ipython().run_line_magic('load_ext', 'code_beatrix') # In[2]: import os, glob js_path = os.path.dirname(code_beatrix.jsscripts.snap.__file__) files = [ os.path.split(_)[-1] for _ in glob.glob(js_path + "/*.js") ] print(",".join(files)) path = "/static/snap/" js_libs = [path + _ for _ in files ] # In[3]: import notebook print("fichier à récupérer dans ", "..." + js_path[-40:]) print("fichier à copier à ", os.path.join(os.path.dirname(notebook.__file__),"static", "snap")) # In[4]: from code_beatrix.jsscripts import copy_jstool2notebook copy_jstool2notebook("snap") # Si le résultat est vide, cela signifie que les fichiers ont déjà été copiés. On veut obtenir ceci : # In[5]: from pyquickhelper.helpgen import NbImage NbImage("screenshot_scratch_nb.png", width="75%") # On exécute le code suivant pour faire apparaître la fenêtre. Dernière précision, sauver le notebook ne sauve pas l'animation Scratch, il faut le faire soi-même (le résultat ne passe pas très dans la documentation encore, problème de frame et de javascript). # In[6]: html_src = """