dazzler
v0.10.0
Dazzler是Python创建桌面或Web应用程序的混合UI框架。
用AIOHTTP,React和Electron构建。
使用PIP安装: $ pip install dazzler
使用GitHub模板快速启动
创建一个带有布局的页面,并分配绑定,以保存和加载会话系统的访客名称。如果没有通过TIE和变换输入值,则禁用访问者名称的按钮将被禁用。
from dazzler import Dazzler
from dazzler . system import Page , BindingContext , CallContext , transforms as t
from dazzler . components import core
app = Dazzler ( __name__ )
page = Page (
__name__ ,
core . Container ([
core . Html ( 'H2' , 'My dazzler page' ),
core . Container ( 'Please enter a name' , identity = 'visitor-name' ),
core . Input ( value = '' , identity = 'input' ),
core . Button ( 'Save name' , identity = 'save-btn' , disabled = True ),
], identity = 'layout' , id = 'layout' ),
title = 'My Page' ,
url = '/'
)
# UI updates via tie & transforms
page . tie ( 'value@input' , 'disabled@save-btn' ). transform (
t . Length (). t ( t . Lesser ( 1 ))
)
# Bindings executes on the server via websockets.
@ page . bind ( 'clicks@save-btn' )
async def on_click ( context : BindingContext ):
# Save the visitor name via session system
name = await context . get_aspect ( 'input' , 'value' )
await context . session . set ( 'visitor' , name )
await context . set_aspect (
'visitor-name' , children = f'Saved { name } '
)
# Aspects defined on the layout trigger on initial render and
# allows to insert initial data.
# `call` executes via regular requests.
@ page . call ( 'id@layout' )
async def on_layout ( context : CallContext ):
visitor = await context . session . get ( 'visitor' )
if visitor :
await context . set_aspect (
'visitor-name' , children = f'Welcome back { visitor } !'
)
app . add_page ( page )
if __name__ == '__main__' :
app . start ()完整的文档托管在readThedocs上。
获得命令行工具的帮助: $ dazzler --help