-
Notifications
You must be signed in to change notification settings - Fork 511
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Minor change in style of calculator demo
- Loading branch information
1 parent
bb8eb0e
commit ee011b8
Showing
6 changed files
with
20 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
Questo tutorial spiega come sviluppare un'applicazione eseguibile in un browser scritta con il linguaggio di programmazione Python. Faremo un esempio sviluppando una calcolatrice. | ||
Questo tutorial spiega come sviluppare un'applicazione eseguibile in un browser scritta con il linguaggio di programmazione Python. Faremo un esempio sviluppando una calcolatrice. | ||
|
||
Ti servirà un editor di testo e, ovviamente, un browser con accesso ad internet. | ||
|
||
|
@@ -33,14 +33,14 @@ document <= "Hello !" | |
In una cartella vuota, salva la pagina come __`index.html`__. Ci sono due possibilità per visualizzarlo ne browser: | ||
|
||
- usa il comando File/Open del tuo browser: è la soluzione più semplice. Comporta [alcune limitazioni](/static_doc/en/file_or_http.html) nel caso di un utilizzo avanzato, ma funziona alla perfezione per questo tutorial. | ||
- avvia un server web: per esempio, se il interprete Python che puoi scaricare dal sito python.org è installato, esegui il comando `python -m http.server` nella cartella in cui è presente il file index.html. Poi inserisci _localhost:8000/index.html_ nella barra degli indirizzi del browser. | ||
- avvia un server web: per esempio, se il interprete Python che puoi scaricare dal sito python.org è installato, esegui il comando `python -m http.server` nella cartella in cui è presente il file index.html. Poi inserisci _localhost:8000/index.html_ nella barra degli indirizzi del browser. | ||
|
||
Quando la pagina si aprirà, dovresti vedere il messaggio "Hello !" all'interno del browser. | ||
Quando la pagina si aprirà, dovresti vedere il messaggio "Hello !" all'interno del browser. | ||
|
||
Composizione della pagina | ||
========================= | ||
|
||
Ora diamo un'occhiata al contenuto della pagina. Nella sezione `<head>` viene caricato lo script __`brython.js`__: è questo l'engine di Brython, il programma che trova ed esegue gli script Python inclusi nella pagina. In questo esempio Brython viene scaricato online da un CDN, quindi non si deve installare nulla sul PC. Nota il numero di versione (`[email protected]`): lo puoi aggiornare ad ogni nuova versione di Brython. | ||
Ora diamo un'occhiata al contenuto della pagina. Nella sezione `<head>` viene caricato lo script __`brython.js`__: è questo l'engine di Brython, il programma che trova ed esegue gli script Python inclusi nella pagina. In questo esempio Brython viene scaricato online da un CDN, quindi non si deve installare nulla sul PC. Nota il numero di versione (`[email protected]`): lo puoi aggiornare ad ogni nuova versione di Brython. | ||
|
||
Il tag `<body>` contiene l'attributo `onload="brython()"`. Significa che quando la pagina ha finito di caricarsi, il browser deve chiamare la funzione `brython()`, che è definita nell'engine Brython descritto poco sopra. Questa funzione cerca tutti i tag `<script>` che hanno l'attributo `type="text/python"` e li esegue. | ||
|
||
|
@@ -52,9 +52,9 @@ from browser import document | |
document <= "Hello !" | ||
``` | ||
|
||
Questo è un programma standard scritto in Python, comincia importando un modulo: __`browser`__ (in questo caso un modulo incluso nell'engine Brython __`brython.js`__). Questo modulo ha un attributo `document` che si riferisce al contenuto mostrato nella finestra del browser. | ||
Questo è un programma standard scritto in Python, comincia importando un modulo: __`browser`__ (in questo caso un modulo incluso nell'engine Brython __`brython.js`__). Questo modulo ha un attributo `document` che si riferisce al contenuto mostrato nella finestra del browser. | ||
|
||
Per aggiungere del testo al documento, o in pratica per mostrare testo nel browser, la sintassi usata da Brython è | ||
Per aggiungere del testo al documento, o in pratica per mostrare testo nel browser, la sintassi usata da Brython è | ||
|
||
```python | ||
document <= "Hello !" | ||
|
@@ -66,7 +66,7 @@ Formattare del testo usando tags HTML | |
===================================== | ||
I tag HTML permettono, ad esempio, di formattare il testo per scrivere in grassetto (tag `<B>`), in corsivo (tag `<I>`), ecc. | ||
|
||
Con Brython questi tag sono disponibili come funzioni definite nel modulo __`html`__ del pacchetto __`browser`__. Ecco come usarli: | ||
Con Brython questi tag sono disponibili come funzioni definite nel modulo __`html`__ del pacchetto __`browser`__. Ecco come usarli: | ||
|
||
```python | ||
from browser import document, html | ||
|
@@ -86,7 +86,7 @@ I tag si possono anche sommare tra di loro, come anche con le stringe: | |
document <= html.B("Hello, ") + "world !" | ||
``` | ||
|
||
Il primo parametro di una funzione-tag può essere una stringa, un numero, oppure un altro tag. Può anche essere un qualsiasi elemento Python purchè sia 'iterabile' (list comprehension, generator): in questo caso tutti gli elementi generati dell'elemento iterabile verranno aggiunti al tag: | ||
Il primo parametro di una funzione-tag può essere una stringa, un numero, oppure un altro tag. Può anche essere un qualsiasi elemento Python purchè sia 'iterabile' (list comprehension, generator): in questo caso tutti gli elementi generati dell'elemento iterabile verranno aggiunti al tag: | ||
|
||
```python | ||
document <= html.UL(html.LI(i) for i in range(5)) | ||
|
@@ -136,6 +136,7 @@ td{ | |
padding: 10px 30px 10px 30px; | ||
border-radius: 0.2em; | ||
text-align: center; | ||
cursor: default; | ||
} | ||
#result{ | ||
border-color: #000; | ||
|
@@ -152,16 +153,16 @@ Gestione degli eventi | |
Il prossimo passo è collegare un'azione alla pressione dei pulsanti della calcolatrice: | ||
|
||
- per numeri e operatori: stampa la cifra o operatore nel campo del risultato | ||
- per =: esegui l'operazione e stampa il risultato, o un messaggio di errore se l'input non è valido | ||
- per la lettera C: resetta il campo del risultato | ||
- per =: esegui l'operazione e stampa il risultato, o un messaggio di errore se l'input non è valido | ||
- per la lettera C: resetta il campo del risultato | ||
|
||
Per gestire gli elementi visibili nella pagina, il programma deve prima ottenerne un riferimento. I bottoni sono stati creati usando il tag `<TD>`; si può ottenere i riferimenti a questo tag con questa sintassi: | ||
Per gestire gli elementi visibili nella pagina, il programma deve prima ottenerne un riferimento. I bottoni sono stati creati usando il tag `<TD>`; si può ottenere i riferimenti a questo tag con questa sintassi: | ||
|
||
```python | ||
document.select("td") | ||
``` | ||
|
||
L'argomento passato al metodo `select()` è un _selettore CSS_. I più comuni sono: il nome di un tag ("td"), l'attributo `id` dell'elemento ("#result") o i suoi attributi di tipo "class" (".classname"). Il risultato di `select()` è sempre una lista di elementi. | ||
L'argomento passato al metodo `select()` è un _selettore CSS_. I più comuni sono: il nome di un tag ("td"), l'attributo `id` dell'elemento ("#result") o i suoi attributi di tipo "class" (".classname"). Il risultato di `select()` è sempre una lista di elementi. | ||
|
||
Gli eventi che possono verificarsi su un elemento di una pagina hanno nomi normalizzati: quando l'utente clicca su un pulsante, l'evento "click" viene lanciato. Nel programma, questo evento causa l'esecuzione di una funzione. L'associazione tra elemento, evento e funzione si definisce con la seguente sintassi: | ||
|
||
|
@@ -176,7 +177,7 @@ for button in document.select("td"): | |
button.bind("click", action) | ||
``` | ||
|
||
Per essere conformi con la sintassi Python la funzione `action()` deve essere definita nel programma prima dell'uso. Queste funzioni, denominate "callback", accettano un singolo parametro, un oggetto che rappresenta l'evento. | ||
Per essere conformi con la sintassi Python la funzione `action()` deve essere definita nel programma prima dell'uso. Queste funzioni, denominate "callback", accettano un singolo parametro, un oggetto che rappresenta l'evento. | ||
|
||
Il programma completo | ||
===================== | ||
|
@@ -203,7 +204,7 @@ def action(event): | |
# L'elemento cliccato dall'utente è l'attributo "target" | ||
# dell'oggetto "event" che la funzione riceve | ||
element = event.target | ||
# L'attributo "text" dell'elemento contiene | ||
# L'attributo "text" dell'elemento contiene | ||
# il testo visibile sul pulsante | ||
value = element.text | ||
if value not in "=C": | ||
|