国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python做界面,強(qiáng)烈推薦nicegui

這篇具有很好參考價(jià)值的文章主要介紹了python做界面,強(qiáng)烈推薦nicegui。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

在網(wǎng)上搜索 “python 做界面” ,得到的結(jié)果無非是 TkinterwxWidgets 、 QtGtk 。它們要不然就是打包后太大,要不就是界面丑,要不就是代碼繁瑣。這些都是 GUI,那么 web 界面又如何?

我之前推薦過 streamlit,在簡單的場景下,它仍然值得推薦。但是 streamlit 實(shí)在不靈活,受限于它的核心機(jī)制,有些需求幾乎無法實(shí)現(xiàn)。用來做簡單的數(shù)據(jù)看板,還行。

streamlit 中加個(gè)邊框線都很復(fù)雜,無語

我需要一個(gè)靈活的web框架,可以做web服務(wù)的網(wǎng)站,也可以打包成獨(dú)立的 exe ?,F(xiàn)在找到了,就是 niecgui。

看看演示效果python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

后續(xù)我會(huì)發(fā)布更多關(guān)于 nicegui 的教程。其中涉及重要知識(shí)點(diǎn)的,會(huì)以文章形式發(fā)布(方便查找)。視頻主要演示實(shí)戰(zhàn)過程。

今天,我將用一個(gè)小例子,整體體驗(yàn)一下 nicegui 吸引我的特性:

  1. 上手 nicegui 最關(guān)鍵的知識(shí)點(diǎn)
  2. 打包獨(dú)立的 exe

我們需要安裝這些庫

pip install nicegui pyinstaller pandas openpyxl

不要忘記一鍵三連。你的點(diǎn)贊、收藏、關(guān)注,是我創(chuàng)作的動(dòng)力。


啟動(dòng)

創(chuàng)建 main.py 文件。簡單顯示一段文本作為開始。python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

  • 行3: 所有的組件使用 ui.xxxx 創(chuàng)建
  • 行6: 最后必需寫這句,啟動(dòng)服務(wù)

我們只需要簡單執(zhí)行 main.py 腳本即可。默認(rèn)情況下,你的瀏覽器會(huì)自動(dòng)打開了頁面。效果是這樣子:

python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

注意幾點(diǎn):

執(zhí)行腳本的控制臺(tái),此時(shí)處于占用狀態(tài)。因?yàn)?nicegui 啟動(dòng)了一個(gè) web 服務(wù)。

python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

如果你關(guān)掉了這個(gè)控制臺(tái),那么服務(wù)就停止。

nicegui 使用的是 fastapi 作為 web 服務(wù)框架

此外,它會(huì)自動(dòng)監(jiān)控當(dāng)前目錄的 python 文件變化。因此我們可以直接修改代碼(保存文件),瀏覽器的界面會(huì)自動(dòng)更新。

nicegui 內(nèi)置了許多組件可以使用,我們也沒必要每個(gè)組件去學(xué)習(xí),需要的時(shí)候查文檔即可。

更多組件的使用技巧,可以查看我的后續(xù)視頻教程

今天重點(diǎn)是講解 nicegui 的關(guān)鍵知識(shí)點(diǎn),我將用一個(gè)非常簡單的需求??创a更直接:

python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

界面是這樣子:

![圖片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

  • 需求是,在輸入框中輸入execl 文件,點(diǎn)擊按鈕,下方顯示表格數(shù)據(jù)

布局

代碼與界面對比,我們可以看到 nicegui 的基本布局方式:python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

  • 按代碼執(zhí)行創(chuàng)建組件的順序,界面上從上往下放置

很容易想到,它必定提供了一個(gè)能讓我們把組件橫向放置的組件,比如 ui.row:python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言布局并非學(xué)習(xí) nicegui 的核心知識(shí)點(diǎn),現(xiàn)在,我們不需要關(guān)注布局


事件驅(qū)動(dòng)

nicegui 與市面上大多數(shù)界面框架一樣,使用事件驅(qū)動(dòng)流程推進(jìn)。在我們的需求中,點(diǎn)擊按鈕后,需要加載表格。因此需要定義按鈕的點(diǎn)擊事件。

![圖片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

  • 行10-12:定義函數(shù)
  • 行14:設(shè)置按鈕參數(shù) on_click = 自定義函數(shù)
  • 此時(shí)點(diǎn)擊按鈕,自定義函數(shù)就會(huì)執(zhí)行

但是,我們該怎么在自定義函數(shù)中加入表格?所有基于事件驅(qū)動(dòng)的框架,都需要把組件提前放置好,就算當(dāng)前沒有合適的數(shù)據(jù)。

在 nicegui 中有三種官方的方式。建議大家耐心看完,我相信官方文檔都沒有講解得這么有邏輯。

我知道官方的方式都顯得挺繁瑣。放心,不是只能用官方的方式,我們可以自己打造更新方式。比如像 streamlit 一樣的"傻瓜模式"

方式一:直接放入空表格,在點(diǎn)擊按鈕的時(shí)候,重新填入表格數(shù)據(jù)

python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

  • 行19:在 row 組件下方創(chuàng)建 table 組件,這次我們需要在點(diǎn)擊事件中使用表格對象,因此定義變量 table
  • 行11:使用 pandas 加載數(shù)據(jù)
  • 行13-14:改寫表格的配置。nicegui 使用 aggrid,這是一個(gè)非常厲害的前端表格庫,可以配置出功能強(qiáng)大的表格。這里我們只是配置表頭和數(shù)據(jù)
  • 行15:調(diào)用 update 函數(shù),此時(shí)界面的表格才能刷新

界面是這樣子的:python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

這種方式需要一開始定義一個(gè)空表格,顯得不自然


方式二:使用容器

我們可以先定義一個(gè) row 容器作為表格的占位:

python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

  • 行19:定義 row,用變量"拿著" 對象
  • 行13:清除容器
  • 行14:把表格移到容器里面

這種方式也顯得不自然,因?yàn)楸砀竦脑O(shè)置(行13-14) 與表格定義的地方(行19) 被劃到不同的地方。每次都需要清除容器,比較麻煩。


方式三:定義刷新函數(shù)

官方為了解決上述方式的不協(xié)調(diào),特意打造了一種刷新裝飾器。其實(shí)本質(zhì)上就是方式二的封裝:

![圖片](data:image/svg+xml,%3C%3Fxml version=‘1.0’ encoding=‘UTF-8’%3F%3E%3Csvg width=‘1px’ height=‘1px’ viewBox=‘0 0 1 1’ version=‘1.1’ xmlns=‘http://www.w3.org/2000/svg’ xmlns:xlink=‘http://www.w3.org/1999/xlink’%3E%3Ctitle%3E%3C/title%3E%3Cg stroke=‘none’ stroke-width=‘1’ fill=‘none’ fill-rule=‘evenodd’ fill-opacity=‘0’%3E%3Cg transform=‘translate(-249.000000, -126.000000)’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)

  • 行20-23:定義函數(shù),并打上 ui.refreshable 裝飾器
  • 行25:執(zhí)行函數(shù),相當(dāng)于方式二中使用容器占位
  • 行12:由于目前的版本,refreshable 不能支持參數(shù),我們只能定義全局變量
  • 行15:調(diào)用 table box.refresh 函數(shù),相當(dāng)于方式二中的,把容器內(nèi)容清空,然后重新執(zhí)行一次 table box 函數(shù)

實(shí)話說,這里官方設(shè)計(jì)不怎么樣。這種方式由于全局變量的影響,導(dǎo)致代碼更離散。

我已經(jīng)向官方提了 issue ,未來的版本可能會(huì)得到改善

是不是感覺與 streamlit 相比,要麻煩很多?確實(shí)是這樣子。不過,我們可以利用它的特性,打造出類似 streamlit 的運(yùn)行方式。下一節(jié)我就會(huì)詳細(xì)介紹


打包獨(dú)立應(yīng)用

nicegui 特別吸引我的一點(diǎn)是,它可以讓我們直接打包成單文件程序,可以在其他沒有安裝 python 的電腦上運(yùn)行。

首先,我們需要修改 main.py 的代碼:

python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

  • 在 ui.run 函數(shù)中,設(shè)置2個(gè)參數(shù)
  • reload = False 是打包必需
  • native = True ,程序啟動(dòng)時(shí),就像普通的程序一樣有獨(dú)立的窗體。如果此參數(shù)為False,那么啟動(dòng)時(shí)就會(huì)觸發(fā)瀏覽器打開頁面

然后在同目錄下創(chuàng)建一個(gè) build.py 文件,代碼如下:

python做界面,強(qiáng)烈推薦nicegui,python,python,數(shù)據(jù)庫,開發(fā)語言

  • 這與官方文檔有一些不一樣。安裝官方給的代碼,很容易把其他的python環(huán)境給打包進(jìn)來,導(dǎo)致最終文件非常大
  • 建議大家使用 venv 創(chuàng)建虛擬環(huán)境進(jìn)行打包

然后在同目錄下創(chuàng)建一個(gè) build.py 文件,代碼如下:

[外鏈圖片轉(zhuǎn)存中…(img-8PdW7ayu-1689833136779)]

  • 這與官方文檔有一些不一樣。安裝官方給的代碼,很容易把其他的python環(huán)境給打包進(jìn)來,導(dǎo)致最終文件非常大
  • 建議大家使用 venv 創(chuàng)建虛擬環(huán)境進(jìn)行打包

接下來就是執(zhí)行這個(gè)文件即可。成功后,同目錄下會(huì)看到一個(gè) dist 的文件夾,里面就是打包后的 exe 文件。文章來源地址http://www.zghlxwxcb.cn/news/detail-642816.html

到了這里,關(guān)于python做界面,強(qiáng)烈推薦nicegui的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)庫課程設(shè)計(jì) python+mysql+圖形化界面

    數(shù)據(jù)庫課程設(shè)計(jì) python+mysql+圖形化界面

    進(jìn)行操作的表 ? 增加界面 ? 刪除界面 ? 修改界面 ? ?查找界面 ?

    2024年02月09日
    瀏覽(18)
  • 程序員強(qiáng)烈推薦:IDEA 常用配置指南

    程序員強(qiáng)烈推薦:IDEA 常用配置指南

    1.1 基本配置 圖 1.1-1 修改更改主題 + 背景圖片 如果IDEA版本是2023.1.2以后的版本可以開啟 newUI 體驗(yàn)新版的UI界面,我個(gè)人是挺喜歡的?? 1.2 快捷鍵配置 圖1.2-1 修改快捷鍵 2.1 配置GIT 圖2.1-1配置git 【git提交的幾個(gè)小建議】 建議對git提交人和提交信息進(jìn)行規(guī)范,同時(shí)代碼提交應(yīng)當(dāng)

    2024年02月09日
    瀏覽(19)
  • 運(yùn)維:18工作中常用 Shell 腳本, 強(qiáng)烈推薦

    運(yùn)維:18工作中常用 Shell 腳本, 強(qiáng)烈推薦

    ? 1、檢測兩臺(tái)服務(wù)器指定目錄下的文件一致性

    2024年02月14日
    瀏覽(17)
  • .Net全網(wǎng)最簡RabbitMQ操作【強(qiáng)烈推薦】

    .Net全網(wǎng)最簡RabbitMQ操作【強(qiáng)烈推薦】

    【前言】 本文自1年前的1.0版本推出以來,已被業(yè)界大量科技公司采用。同時(shí)也得到了.Net圈內(nèi)多位大佬的關(guān)注+推薦,文章也被多家頂級.Net/C#公眾號轉(zhuǎn)載。 現(xiàn)在更新到了7.0版本,更好的服務(wù)各位.Neter。 ? 【正文】 支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Ma

    2024年02月08日
    瀏覽(16)
  • 強(qiáng)烈推薦一款好用的SSH連接工具,無廢話版

    強(qiáng)烈推薦一款好用的SSH連接工具,無廢話版

    工欲善其事必先利其器,這句話放在咱們開發(fā)人員身上,真的是非常有道理的。 作為一名后端或者是運(yùn)維,經(jīng)??吹剿麄冇肵Shell + xftp配合。說實(shí)話,真沒必要,有好用的一站式管理工具,為什么要秀coding呢? 我用了三年的工具,真心覺得好用,可能大伙也聽過,就是FinalS

    2024年02月11日
    瀏覽(35)
  • idea熱部署插件JRebel激活(強(qiáng)烈推薦,試試就離不開了)

    idea熱部署插件JRebel激活(強(qiáng)烈推薦,試試就離不開了)

    JRebel可以實(shí)現(xiàn)在idea中熱部署項(xiàng)目,修改后不用重啟項(xiàng)目,讓開發(fā)更絲滑。 JRebel需要激活才可以正常使用。 博主最近在找工作,Java前后端全站工程師一枚,有合適的請幫博主推薦一下 有項(xiàng)目的也可以聯(lián)系我,感謝感謝 博主在北京 2023-07-04 發(fā) V:y393016244 FileSettingsPlugins 搜索

    2024年02月13日
    瀏覽(35)
  • 一個(gè).Net強(qiáng)大的Excel控件,支持WinForm、WPF、Android【強(qiáng)烈推薦】

    一個(gè).Net強(qiáng)大的Excel控件,支持WinForm、WPF、Android【強(qiáng)烈推薦】

    推薦一個(gè)強(qiáng)大的電子表單控件,使用簡單且功能強(qiáng)大。 這是一個(gè)開源的表格控制組件,支持Winform、WPF和Android平臺(tái),可以方便的加載、修改和導(dǎo)出Excel文件,支持?jǐn)?shù)據(jù)格式、大綱、公式計(jì)算、圖表、腳本執(zhí)行等、還支持觸摸滑動(dòng),可以方便地操作表格。 總的來說是一個(gè)可以快

    2024年02月07日
    瀏覽(30)
  • 強(qiáng)烈推薦這 6 款 API 測試工具,絕對有一款沒聽過

    強(qiáng)烈推薦這 6 款 API 測試工具,絕對有一款沒聽過

    Postman : Postman 是一個(gè)流行的 API 開發(fā)和測試工具,提供了豐富的功能,包括請求構(gòu)建、測試自動(dòng)化、數(shù)據(jù)驅(qū)動(dòng)等。用戶可以通過 Postman 的界面輕松創(chuàng)建和測試 RESTful API。 Insomnia : Insomnia 是一款功能強(qiáng)大的開源 API 測試工具,支持多種協(xié)議和格式,包括 REST、GraphQL、gRPC、JSON、

    2024年02月08日
    瀏覽(27)
  • 還不知道ai繪畫怎么操作?強(qiáng)烈推薦以下三個(gè)ai一鍵繪畫軟件

    還不知道ai繪畫怎么操作?強(qiáng)烈推薦以下三個(gè)ai一鍵繪畫軟件

    ai繪畫是指利用人工智能技術(shù),根據(jù)輸入的文字描述生成新的藝術(shù)作品。通過ai繪畫,我們可以在很短的時(shí)間內(nèi)生成具備不同風(fēng)格、表現(xiàn)力和情感的作品,使得藝術(shù)創(chuàng)作更加普及和便捷。同時(shí),ai繪畫還可以應(yīng)用于廣告設(shè)計(jì)、游戲設(shè)計(jì)、電影制作等多個(gè)領(lǐng)域,為各行各業(yè)帶來創(chuàng)

    2024年02月15日
    瀏覽(26)
  • 人臉識(shí)別系統(tǒng)OpenCV+dlib+python(含數(shù)據(jù)庫)Pyqt5界面設(shè)計(jì) 項(xiàng)目源碼 畢業(yè)設(shè)計(jì)

    人臉識(shí)別系統(tǒng)OpenCV+dlib+python(含數(shù)據(jù)庫)Pyqt5界面設(shè)計(jì) 項(xiàng)目源碼 畢業(yè)設(shè)計(jì)

    Python語言、dlib、OpenCV、Pyqt5界面設(shè)計(jì)、sqlite3數(shù)據(jù)庫 ? ? ?本系統(tǒng)使用dlib作為人臉識(shí)別工具,dlib提供一個(gè)方法可將人臉圖片數(shù)據(jù)映射到128維度的空間向量,如果兩張圖片來源于同一個(gè)人,那么兩個(gè)圖片所映射的空間向量距離就很近,否則就會(huì)很遠(yuǎn)。因此,可以通過提取圖片并

    2024年02月05日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包