LTK é um pequeno kit de ferramentas para escrever UIs da web em PyScript. Para obter uma explicação sobre PyScript e LTK, consulte YouTube.
Para exemplos, consulte:
LTK é implementado como uma biblioteca Python declarativa e aproveita jQuery
para operações DOM.
Instale o LTK do pypi:
python3 -m pip install pyscript-ltk
import ltk
ltk . Text ( "Hello World" ). appendTo ( ltk . body )
Para começar a usar o LTK, recomendamos que você experimente em pyscript.com:
Novos tipos de widget são criados subclassificando ltk.Widget
:
class HBox ( Widget ):
classes = [ "ltk-hbox" ]
Por padrão, os widgets são criados como elementos DOM div
. Você pode escolher uma tag diferente:
class Preformatted ( Widget ):
classes = [ "ltk-pre" ]
tag = "pre"
Para criar uma UI, os elementos são construídos 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
],
)
Os widgets são adicionados a outros usando appendTo
append
jQuery
:
ltk . body . append (
ltk . Table (...). element
)
container = ltk . VBox (...)
ltk . H1 ( "This is a header" ). appendTo ( container )
Quando um widget LTK é criado, um elemento jQuery correspondente é anexado a ele no construtor ltk.Widget.__init__
. Ele usa o valor tag
definido pela classe declarante e o elemento construído é referido como element
. Como a chamada append
é uma função JavaScript, implementada por jQuery, não passamos o widget LTK diretamente, mas passamos seu element
para anexar ao DOM.
Os widgets podem ser estilizados usando três abordagens diferentes:
css
do jQuery
: ltk . Text ( "Error: Flux capacitor low!" )
. css ( "background-color" , "red" )
. css ( "color" , "white" )
. css ( "padding" , 8 )
dict
para facilitar o compartilhamento de estilos: error = {
"background-color" : "red" ,
"color" : "white" ,
"padding" : 8 ,
}
ltk . Text ( "Error: Flux capacitor low!" , error )
addClass
do jQuery
: ltk . Text ( "Some text" ). addClass (" my - special - text )
A folha de estilo externa deve ter estas regras:
. ltk-text {
font-family : Arial;
}
. my-special-text {
font-family : Courier;
background-color : red;
color : white;
padding : 8 px ;
}
Folhas de estilo externas podem ser incluídas no index.html
original ou injetadas em tempo de execução do Python usando:
ltk . inject_style ( "https://example.org/awesome_styles.css" )
Os manipuladores de eventos são anexados usando mecanismos jQuery
.
def buy ( event ):
purchase (...)
ltk . Card ( "Buy Now" ). on ( "click" , ltk . proxy ( buy ))
Você também pode usar o decorador mais declarativo:
@ ltk . callback
def buy ( event ):
purchase (...)
ltk . Card ( "Buy Now" ). on ( "click" , buy )
Veja a pia de cozinha LTK ou explore a pasta de examples
LTK é coberto pela licença Apache:
A licença Apache é uma licença permissiva de software de código aberto.
Ele permite que os usuários usem, modifiquem e distribuam livremente o software (inclusive para fins comerciais).
Versões modificadas podem ser distribuídas sem a necessidade de liberar o código-fonte. Embora as alterações no código-fonte devam ser documentadas.
A licença requer versões modificadas para manter a licença Apache e o aviso de direitos autorais.
O software é fornecido pelos autores "no estado em que se encontra", sem garantias.
Os usuários não recebem direitos de patente dos contribuidores, mas os contribuidores não podem revogar concessões de patentes para contribuições anteriores.
A licença não requer trabalhos derivados para adotar a licença Apache. Embora isso seja incentivado para consistência.
Se você nunca executou setuptools, twine, etc, em sua máquina faça o seguinte:
python3 -m pip install --user --upgrade setuptools wheel twine build
Para fazer uma compilação, primeiro incremente a versão em pyproject.toml
:
[ project ]
name = "pyscript-ltk"
version = "0.1.22"
Em seguida, construa o pacote em uma distribuição fonte e em uma roda Python:
python3 -m build
Em seguida, verifique se a compilação funciona para pypi:
twine check dist/*
Em seguida, faça upload para o ambiente de teste pypi:
twine upload --repository pypitest dist/*
Finalmente, se o upload do teste pypi parecer funcionar bem, execute:
twine upload dist/*
Se você receber um erro informando que uma determinada versão já existe, verifique o conteúdo da pasta dist
.