基于Tkinter小型應(yīng)用開發(fā)經(jīng)驗總結(jié)

項目進行到后期,基于目前試驗結(jié)果和所有數(shù)據(jù),已經(jīng)完成初步的模型建立,需要根據(jù)現(xiàn)有模型和算法,對算法和模型進行包裝,完成black box黑盒子,所以對我們的程序進行了簡單的小程序開發(fā)?;诋?dāng)前的組內(nèi)技術(shù)棧,所以選擇使用python進行小程序開發(fā)。選擇使用的UI框架為Tkinter(原本想要使用pyQT進行開發(fā),但是要求程序較小,因而使用最簡單的Tkinter進行入門開發(fā))。

1. 確定整體結(jié)構(gòu)

目前小程序結(jié)構(gòu)比較簡單,預(yù)估使用三個窗口及可以完成,程序的主界面,彈出界面1和彈出界面2。彈出界面1和彈出界面2分別對應(yīng)不同的邏輯。

2. 編寫不同窗口的UI

在tkinter中,用于頁面布局的方式主要有三種,pack,grid和place。目前我使用的為place和grid,對于pack不是特別熟悉。grid從字面理解是將頁面分成N行N列,grid分布控件可以將控件放置到第幾行第幾列。而place是根據(jù)頁面的左上角為坐標(0,0),根據(jù)左上角的位置,相對應(yīng)的長度寬度可以通過relx,rely,relheightrelwidth進行設(shè)計具體的位置。通過rel方式進行設(shè)計,即使改變窗口大小也不會影響控件的布局。而place中x,y的放置方式則是控件的絕對位置,不建議使用。

3.不同窗口的邏輯

不同窗口需要不同的內(nèi)在邏輯,在tkinter中,button控件對應(yīng)command需要對應(yīng)計算的功能,entry控件對應(yīng)的輸入元素需要使用stringVar進行跟蹤而label則是用來展示的標簽,需要使用font,color等對label展示內(nèi)容進行設(shè)置。

4. 對于腳本進行打包

python常用的打包工具有pyinstaller和nuitka,本次使用的為nuitka,由于python為解釋性腳本語言,依賴庫較多,如果使用開發(fā)環(huán)境的python進行打包,則打包工具會將該環(huán)境下所有包進行打包,編譯時間不僅很久,而且打包后的文件特別大。目前的解決方法就是使用conda或者python自帶的環(huán)境工具創(chuàng)建一個僅有python解釋器的環(huán)境,在該環(huán)境下僅安裝所使用的包及其依賴包,在該環(huán)境下對腳本進行打包,會大大降低編譯時間和打包文件的大小。

5. Note

5.1

如果腳本中使用了pandas,numpy等大型python包,建議可以使用polars或者datatabel進行替換。

5.2

python腳本比較容易反編譯,如果有比較機密信息,建議使用nuitka打包成一個文件,或者提前將秘密信息編譯成二進制的文件進行引用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容