LTK es un pequeño conjunto de herramientas para escribir interfaces de usuario web en PyScript. Para obtener una explicación de PyScript y LTK, consulte YouTube.
Para ejemplos ver:
LTK se implementa como una biblioteca declarativa de Python y aprovecha jQuery
para operaciones DOM.
Instale LTK desde pypi:
python3 -m pip install pyscript-ltk
import ltk
ltk . Text ( "Hello World" ). appendTo ( ltk . body )
Para comenzar con LTK, le recomendamos que lo pruebe en pyscript.com:
Los nuevos tipos de widgets se crean subclasificando ltk.Widget
:
class HBox ( Widget ):
classes = [ "ltk-hbox" ]
De forma predeterminada, los widgets se crean como elementos DOM div
. Puedes elegir una etiqueta diferente:
class Preformatted ( Widget ):
classes = [ "ltk-pre" ]
tag = "pre"
Para crear una interfaz de usuario, los elementos se construyen de forma declarativa:
ltk . Table (
ltk . TableRow (
ltk . TableHeader ( "header1" )
ltk . TableHeader ( "header2" )
),
[
ltk . TableRow (
ltk . TableData ( value1 ),
ltk . TableData ( value2 ),
)
for value1 , value2 in data
],
)
Los widgets se agregan a otros mediante las llamadas append
y appendTo
de jQuery
:
ltk . body . append (
ltk . Table (...). element
)
container = ltk . VBox (...)
ltk . H1 ( "This is a header" ). appendTo ( container )
Cuando se crea un widget LTK, se le adjunta un elemento jQuery correspondiente en el constructor ltk.Widget.__init__
. Utiliza el valor tag
definido por la clase declarante y el elemento construido se denomina element
. Como la llamada append
es una función de JavaScript, implementada por jQuery, no pasamos el widget LTK directamente, sino que pasamos su element
para agregarlo al DOM.
Los widgets se pueden diseñar utilizando tres enfoques diferentes:
css
de jQuery
: ltk . Text ( "Error: Flux capacitor low!" )
. css ( "background-color" , "red" )
. css ( "color" , "white" )
. css ( "padding" , 8 )
dict
para que sea más fácil compartir estilos: error = {
"background-color" : "red" ,
"color" : "white" ,
"padding" : 8 ,
}
ltk . Text ( "Error: Flux capacitor low!" , error )
addClass
de jQuery
: ltk . Text ( "Some text" ). addClass (" my - special - text )
La hoja de estilo externa debe tener estas reglas:
. ltk-text {
font-family : Arial;
}
. my-special-text {
font-family : Courier;
background-color : red;
color : white;
padding : 8 px ;
}
Las hojas de estilo externas pueden incluirse en el index.html
original o inyectarse en tiempo de ejecución desde Python usando:
ltk . inject_style ( "https://example.org/awesome_styles.css" )
Los controladores de eventos se adjuntan mediante mecanismos jQuery
.
def buy ( event ):
purchase (...)
ltk . Card ( "Buy Now" ). on ( "click" , ltk . proxy ( buy ))
También puedes usar el decorador más declarativo:
@ ltk . callback
def buy ( event ):
purchase (...)
ltk . Card ( "Buy Now" ). on ( "click" , buy )
Vea el fregadero de cocina LTK o explore la carpeta de examples
LTK está cubierto por la licencia Apache:
La licencia Apache es una licencia de software de código abierto permisiva.
Permite a los usuarios utilizar, modificar y distribuir libremente el software (incluso con fines comerciales).
Las versiones modificadas se pueden distribuir sin tener que publicar el código fuente. Aunque los cambios en el código fuente deben documentarse.
La licencia requiere versiones modificadas para conservar la licencia de Apache y el aviso de derechos de autor.
Los autores proporcionan el software "tal cual" sin garantías.
Los contribuyentes no otorgan derechos de patente a los usuarios, pero los contribuyentes no pueden revocar concesiones de patentes para contribuciones anteriores.
La licencia no requiere que los trabajos derivados adopten la licencia Apache. Aunque se recomienda esto por motivos de coherencia.
Si nunca ejecutó setuptools, twine, etc. en su máquina, haga esto:
python3 -m pip install --user --upgrade setuptools wheel twine build
Para realizar una compilación, primero incremente la versión en pyproject.toml
:
[ project ]
name = "pyscript-ltk"
version = "0.1.22"
Luego construye el paquete en una distribución fuente y una rueda de Python:
python3 -m build
Luego verifique si la compilación funciona para pypi:
twine check dist/*
Luego cárguelo en el entorno de prueba de pypi:
twine upload --repository pypitest dist/*
Finalmente, si la carga de prueba de pypi parece funcionar bien, ejecute:
twine upload dist/*
Si recibe un error que indica que ya existe una determinada versión, verifique el contenido de la carpeta dist
.