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