VersionIntroductionInstallationLimitations du protocole "file"Questions fréquemment poséesSyntaxe, mots-clés et fonctions intégréesDistribution standardImplémentation de importPackages BrythonInterface 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 BrythonRecettes
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 |
module browser.templateLe module template permet de générer dynamiquement certains éléments d'une page HTML, en y intégrant des blocs de code ou des expressions en Python.VariablesDans sa forme la plus simple, un élément inclut un nom de variable entouré d'accolades:<span id="team">{name}</span>Pour remplacer le contenu de cette balise span , on ajoute à la page le
script
L'argument defrom browser import document from browser.template import Template Template(document["team"]).render(name="Liverpool FC") Template peut être soit un élément, soit une chaine de
caractères ; dans le deuxième cas, il s'agit de l'attribut id de
l'élément, on peut donc écrire plus simplement
Le moteur de rendu utilise les f-strings de Python ; si le texte contient des accolades, il faut les doubler:Template("team").render(name="Liverpool FC") <span id="team">{name} - {{ceci est une accolade}}</span>Les attributs d'une balise HTML peuvent également être des variables: <a id="link" href="{url}">{name}</a> Au lieu d'une variable simple, on peut mettre une expression:from browser import document from browser.template import Template Template("link").render(url="brython.info", name="Brython site") <span id="tag-uppercase">{tag.upper()}</span>Pour les attributs qui doivent être rendus sans valeur associée (par exemple l'attribut selected d'une balise OPTION ), la variable ou le résultat de
l'expression doit être un booléen:<option selected="{name==expected}"> Blocs de codeL'attribut spécialb-code permet de définir un bloc de code : une boucle
for ou une condition (if , elif , else ).
<ul id="team-list"> <li b-code="for team in teams:">{team} </ul> Les blocs de code peuvent être imbriqués. Par exemple le code suivant génère une ligne dans un tableau, dans laquelle seules les cellules de rang pair prennent un contenu:teams = ["FC Barcelona", "Real Madrid CF", "Liverpool FC"] Template("team-list").render(teams=teams) <tr> <td b-code="for i in range(16):"> <span b-code="if i % 2 == 0:"> {1 + (i / 2)} </span> </td> </tr> Inclusion d'autres templatesSi un site contient plusieurs pages et qu'on veut mettre en commun certains éléments comme le menu, on peut mettre une partie de la page dans un template secondaire, et on l'inclut dans la page principale par l'attributb-include .
Par example on peut définir le template menu.html:
<img src="logo.png"><h2>{title}</h2>et l'inclure dans la page principale: <div id="menu" b-include="menu.html"></div>Le template inclus dans la page sera rendu avec les arguments passés au template dans la page principale: Template("menu").render(title="Page d'accueil") Gestion d'événementsOn peut définir des fonctions de gestion d'événements qui vont agir sur un élément. Pour cela:
<button id="hello" b-on="click:say_hello">Hello !</button>Code Python: S'il y a plusieurs gestionnaires d'événements, ils sont séparés pardef say_hello(event, element): alert("Hello world") Template("hello", [say_hello]).render() ; :
<button id="hello" b-on="click:say_hello;mouseover:show">Hello !</button>Le gestionnaire d'événement est une fonction qui prend deux arguments, event (l'object événement, intance de DOMEvent) et
element , l'instance de la classe Template .
La référence à element permet d'accéder dans la fonction de gestion aux
données associées à l'élément (celles passées à la méthode render() ). Ces
données sont représentées par l'attribut element.data ; cet objet a comme
attributs les clés des arguments mots-clés passés à render() .
Ainsi, l'exemple ci-dessus peut être réécrit en passant le texte à afficher
comme argument de render() :
Quand une fonction de gestion est exécutée, si les données associées à l'élément ont été modifiées par cette fonction, l'élément est rendu à nouveau avec les nouvelles données. Par exemple, pour incrémenter une valeur en appuyant sur un bouton:def say_hello(event, element): alert(element.data.text) Template("hello", [say_hello]).render(text="Hello, world !") <div id="incrementer"> <button b-on="click:incr">+1</button>{counter} </div>Code Python: def incr(event, element): element.data.counter += 1 Template("incrementer", [incr]).render(counter=0) |