話上一篇博文我們對自動生成詞雲工具的數據清hu洗界面前置知識點進行了梳理總結(擁有這件神器,菜鳥也可以成為數據分析大師(連載三)),主要是對界面中多次生成Checkbutton和tkinter常用布局的優缺點進行了回顧總結。本文主要帶大家實現詞雲自動生成工具的數據清洗界面。
好了,我們開始吧
目標
我們來看一下具體的實現結果,如下圖所示。
分析
先看下圖式布局。
我們把界面分成三大部分進行分析。
第一個部分是選擇清洗內容,這一部分我們製作多個複選框(Checkbutton)控制項和一些快捷選擇按鈕,單擊按鈕時,快捷選擇相應的內容。qi但是,我們需要考慮另一個問題,如果我們需要去除的字符不再選項中呢?這點是必須要考慮到的,我們在界面中添加了一個自定義清洗字符的控制項(使用EntryField和Button控制項),輸入自定義去除字符,通過單擊『添加』按鈕,實現將自定義字符添加到去除列表的功能。
第二部分顯示清洗內容,這一部分主要使用ScrolledText控制項顯示。
第一、二部分我們使用Pmw的Group控制項對裡面的控制項進行包裹(即Group是這些控制項的父控制項)。
第三部分我們布局了提示信息內容(Label)和頁面控制按鈕(Button)。通過上一篇我們知道,使用Group的好處除了可以使節界面乾淨整潔外,還可以在同一頁面中綜合使用Pack和Grid布局管理器。這樣,我們下一步的設計編碼會更加方便。
編碼
我們接著之前WordCloudGUI類的設計進行。
【第一部分】選擇清洗內容
清洗內容的選擇分為設定清洗內容和自定義清洗內容兩部分,其中,設定清洗內容之前,我們需要將多個Checkbutton的屬性內容通過列表進行定義,列表內容如下圖所示。
關於使用for循環創建多個Checqkbutton控制項的方法,我們上一篇已經進行了梳理,這裡不再贅述,第一部分我們先創建多個Checkbutton控制項,代碼如圖所示。
下面我們添加清理內容右邊的按鈕組,具體代碼如下所示。
【第二部分】顯示清洗列表
這一部分界面相對來說比較簡單,不再贅述,具體內容參考代碼如下。
【第三部分】提示信息和頁面控制按鈕
這個比較簡單,我們使用Group控制項將兩個控制頁面按鈕放在了一起(這樣比較美觀),直接上代碼了,如下圖所示。
上面涉及的幾個方法我們暫且不表,今天我們主要目標是實現這一界面功能,我們將上面的內容整合到一起,放到WordCloudGUI類中創建的第二個頁面控制項的下面,然後輸入瀏覽器看看吧。
糾錯
什麼?出錯了?
好吧,我們重新梳理下,如果按照我的步驟大家一步一步敲入代碼的話,錯誤無非就是這樣的:AttributeError: 'WordCloudGUI' object has no attribute 'XXXX'。
我們分析一下,『WordCloudGUI』對象沒有「XXX」屬性,這是因為我們界面中使用了對象的『XXX』屬性,但是對象在初始化的時候沒有找到這一屬性導致的。解決方法很簡單,在對象變量初始化的時候加入這一屬性即可。
什麼?你不知道怎麼加入?
好吧,我們在對象聲明過程中不是有一個def __init__(self,master)這樣的函數麼?在函數下面你肯定能找到self.master = master這個語句(如果找不到請參見擁有這件神器,菜鳥也可以成為數據分析大師(連載二)添加),然後在這個下面添加self.XXX=XXX,這樣,這個屬性就添加到了類中,我們下面使用它就不會再報錯了。
對於類的屬性報錯這麼添加,如果提示是類方法(就是command=XXX這樣的),沒有這一屬性(當然,編輯器不知道這是屬性還是方法),我們的處理方式是添加相應的對象方法(def XXX(self):pass)。這樣,先定義一個什麼都不做的函數(方法),我們後期會對其功能進行擴充的。
好了,今天就到這裡了,歡迎大家留言討論並關注,這一項目我會持續更新,剛興趣的朋友請敲代碼試一試。
轉載請註明出處,百家號:Python高手養成