昨天剛發(fā)了一篇Python/ target=_blank class=infotextkey>Python桌面開發(fā)庫大全的微頭條,就被同事安利了Flet這個庫。這是一個非常新的庫,今年6月份才發(fā)布的第一個版本,雖然很新,但是它背靠巨人-Flutter,可以讓我們使用Python開發(fā)全平臺軟件,雖然目前還不支持全平臺,但是根據(jù)作者的計劃,F(xiàn)lutter支持的,它以后都會支持的,昨天簡單學(xué)習(xí)了一下,真的非常棒,把它推薦給大家。后面我們可以用它做一系列東西。
什么是Flet
Flet是一個框架,允許用你喜歡的語言構(gòu)建交互式多用戶Web,桌面和移動應(yīng)用程序,而無需擁有前端開發(fā)的經(jīng)驗。
主要特點
在幾分鐘內(nèi)從想法到應(yīng)用程序
為您的團隊,周末項目,數(shù)據(jù)輸入表單,kIOSk應(yīng)用程序或高保真原型提供的內(nèi)部工具或儀表板 - Flet是一個理想的框架,可以快速破解一個美觀的交互式應(yīng)用程序,為一組用戶提供服務(wù)。
簡單的架構(gòu)
沒有更復(fù)雜的架構(gòu)與JAVAScript前端,REST API后端,數(shù)據(jù)庫,緩存等。使用Flet,您只需在Python中編寫一個整體式有狀態(tài)應(yīng)用程序,即可獲得多用戶實時單頁應(yīng)用程序(SPA)。
包括電池
要開始使用 Flet 進行開發(fā),您只需要自己喜歡的 IDE 或文本編輯器。沒有 SDK,沒有成千上萬的依賴項,沒有復(fù)雜的工具 - Flet 具有內(nèi)置的 Web 服務(wù)器,其中包含托管資產(chǎn)和桌面客戶端。
由Flutter提供動力
Flet UI是用Flutter構(gòu)建的,所以你的應(yīng)用程序看起來很專業(yè),可以交付到任何平臺。Flet通過將較小的“小部件”組合成具有命令式編程模型的即用型“控件”來簡化Flutter模型。
語言無關(guān)
Flet 與語言無關(guān),因此團隊中的任何人都可以用自己喜歡的語言開發(fā) Flet 應(yīng)用程序。Python已經(jīng)得到支持,Go,C#和其他產(chǎn)品緊隨其后。
交付到任何設(shè)備
將 Flet 應(yīng)用部署為 Web 應(yīng)用,并在瀏覽器中查看它。將其打包為適用于windows,macOS和linux的獨立桌面應(yīng)用程序。將其作為PWA安裝在移動設(shè)備上,或通過適用于iOS和Android的Flet應(yīng)用程序查看。
安裝使用
pip install flet
一個簡單的計數(shù)示例
import flet
from flet import IconButton, Page, Row, TextField, icons
def main(page: Page):
page.title = "Flet counter example"
page.vertical_alignment = "center"
txt_number = TextField(value="0", text_align="right", width=100)
def minus_click(e):
txt_number.value = int(txt_number.value) - 1
page.update()
def plus_click(e):
txt_number.value = int(txt_number.value) + 1
page.update()
page.add(
Row(
[
IconButton(icons.REMOVE, on_click=minus_click),
txt_number,
IconButton(icons.ADD, on_click=plus_click),
],
alignment="center",
)
)
flet.App(target=main)
運行程序:
python counter.py
如何我們希望它只運行在瀏覽器端,可以如下配置:
flet.app(target=main, view=flet.WEB_BROWSER)
默認(rèn)是運行桌面端的,但是在我們啟動的時候,會在隨機端口啟動一個web服務(wù)器,也可以在web端進行訪問
這是官方給的簡單示例,我們來寫一個稍微復(fù)雜一點的:計算器。
頁面代碼比較多,但是挺簡單的,就不貼了,可以看到即使用原生的控件拼出來頁面效果也還不錯,比其他的Python桌面開發(fā)庫要好看的多。雖然它沒有QT那種界面設(shè)計器,通過拖拖拽拽就能生成頁面,但是它的布局方式與前端一樣,因此對于會前端的開發(fā)人員來說非常熟悉,使用起來也很方便。
總結(jié)
目前這個項目還只是一個BETA版的,官方文檔也不夠完善,但是用來開發(fā)一些基礎(chǔ)的軟件還是沒問題的。尤其是基于Flutter,不需要像Electron一樣打包chromium內(nèi)核進去。等后期接入多種語言后,將會給很多程序員提供一個優(yōu)秀的跨平臺開發(fā)方式,不用像Electron和Flutter一樣需要特定的開發(fā)語言才能上手,期待它更加完善。后面我們可以多嘗試一些小工具來練練手。