Version

Introduction

Installation

Limitations du protocole "file"

Questions fréquemment posées

Syntaxe, mots-clés et fonctions intégrées

Distribution standard

Implémentation de import

Packages Brython

Interface avec le navigateur

Introduction - API DOM
Créer un document
Accéder aux éléments
Attributs, propriétés et méthodes

Evénements
Evénements souris
Evénements clavier
Evénements focus
Evénements pour glisser-déposer

Chaine de requête

Interactions avec Javascript

Modules intégrés propres à Brython

browser
browser.aio
browser.ajax
browser.html
browser.local_storage
browser.markdown
browser.object_storage
browser.session_storage
browser.svg
browser.template
browser.timer
browser.webcomponent
browser.websocket
browser.worker

Widgets
browser.widgets.dialog
browser.widgets.menu

interpreter
javascript

Travailler avec Brython

Options d'exécution
Test et débogage
Deployer une application

Recettes

Salut !
Insérer du contenu dans un élément
Mise en forme HTML (gras, italique...)
Table HTML
Attacher / détacher des événements
Gérer la sélection d'options dans un SELECT
Glisser-déposer
Obtenir le contenu d'un élément
Lire le contenu d'un fichier
Stocker des objets localement
Exemple de onmouseover
 

Citation de la spécification du Document Object Model du W3C :

Qu'est-ce que le Document Object Model?

Le Document Object Model est une interface indépendante d'une plateforme ou d'un langage qui permet aux programmes et aux scripts d'accéder dynamiquement au contenu, à la structure et au style des documents, et de les mettre à jour

L'objectif de Brython est d'utiliser Python comme langage de script pour les navigateurs web, à la place de Javascript

Un exemple simple :

<html>
<head>
<script src="/src/brython.js"></script>
<script src="/src/brython_stdlib.js"></script>
</head>

<body>
<script type="text/python">
from browser import document
from browser.widgets.dialog import InfoDialog

def click(ev):
    InfoDialog("Hello", f"Bonjour, {document['zone'].value} !")

# associe une fonction à l'événement "click" sur le bouton
document["echo"].bind("click", click)
</script> <input id="zone"> <button id="echo">click !</button> </body> </html>

essayez :

Pour faire fonctionner les scripts Python, il suffit d'importer le script brython.js (le noyau Brython) et brython_stdlib (la librairie standard). Le chemin (ici /src/brython.js) doit être adapté en fonction de l'emplacement du script.

Si le programme Python est volumineux, une autre possibilité est de l'écrire dans un fichier séparé, et de le charger dans la page en utilisant l'attribut src de la balise <script> :

<html>
<head>
<script src="/brython.js"></script>
</head>

<body>
<script type="text/python" src="test.py">
</script>
<input id="zone">
<button id="echo">clic !</button>
</body>

</html>

Attention, dans ce deuxième cas le script Python est récupéré par un appel Ajax : il doit donc se trouver dans le même domaine que la page HTML.

Ce script a normalement l'extension .py. Dans certains cas les serveurs interprètent un appel Ajax vers cette extension comme une demande d'exécuter le script sur le serveur. Dans ce cas il faut changer l'extension, par exemple la remplacer par .bry comme dans le code suivant:

<script type="text/python" src="test.bry"></script>

Quand on clique sur le bouton, la fonction click() définie dans le script Python est exécutée. Cette fonction récupère la valeur de l'élément INPUT par son id zone, en utilisant la syntaxe document["zone"] : document est un attribut du module intégré browser, il se comporte comme un dictionnaire indexé par les id des éléments DOM. document["zone"] est un objet correspondant à l'élément INPUT ; on accède à la valeur par l'attribut value.

L'affichage peut être réalisé de différentes façons, notamment par la fonction alert() définie dans le même module browser, qui affiche une fenêtre avec le texte passé en paramètre.

Dans cet exemple, nous utilisons un module de la distribution standard de Brython, browser.widgets.dialog, avec une classe InfoDialog qui affiche une boite de dialogue.