之前寫過一系列的tkinter庫控制項的使用方法以及tkinter的三種布局方法。
但是並沒有做過什麼實際的案例,主要原因是因為使用tikinter做界面比較麻煩,沒有可視化的設計來的快,就像我之前用的QT設計工具,就非常方便。
如果做一些簡單的界面,使用tkinter還是很方便的,畢竟是python自帶的庫。
今天將會做下面這樣的一個計算器,可以實現基本的加減程序的運算,整體代碼邏輯比較簡單,主要是一個回調函數的理解。
實現思路
1.UI界面布局
2.功能函數實現
3.重構布局代碼
4.按鈕回調函數綁定
具體實現過程
1.界面實現
實現基本窗口
創建父窗口app,設置幾何尺寸400x400,設置標題,最後循環就實現最簡單的框架了。
添加控制項
控制項這裡主要標籤和按鈕,先來看添加一個標籤和一個按鈕。
裡面的控制項屬性都是為了讓控制項顯示在正好的位置,添加兩個控制項還是很簡單的,但是我們有很多控制項,如果還是用上面的方法就會非常麻煩,通過觀察可以知道,每個按鈕除了位置和按鈕的文字不一樣,其它都是一模一樣的,所以這裡我們可以使用循環來設置。
2.按鈕功能函數的實現
界面實現了,接下來就是實現計算器的功能。
功能1:按下數字和運算符按鈕,按鈕的文字內容顯示到標籤。
功能2:按下清空按鈕,將標籤的內容全部置空刪除。
功能3:按下退格按鈕,標籤往回刪除一個內容。
功能4:按下等於按鈕直接計算結果並顯示在標籤區。
先創建也給display變量,用來表示label的字符內容。set_content是實現功能1的,當我們按下某個按鈕,就將按鈕值傳遞給這個方法,這個方法會先通過display.get獲取當前標籤的內容,然後和text拼接到一起,最後重新放在到標籤裡面。
按下清空按鈕就調用clear方法,直接將標籤內容設為空;
按下退格就是先獲取當前的標籤內容,然後通過切片的方式獲取除掉最後一個字符的內容,最後將當前內容傳遞給display,從而實現退格效果。
等於按鈕按下就調用calculate方法,先獲取當前標籤的內容,通過eval方法計算結果,最後將算式和結果拼接成一個字符串返回給label顯示,過程中如果出現錯誤異常,就顯示error。
3.更改按鈕布局的代碼
方法都定義好了,但是按鈕都是循環實現的,如果直接綁定回調函數肯定不行,因為只能綁定一個,根據上面的功能,按鈕要分為4類。所以這裡在循環顯示按鈕的時候進行分類,為之後綁定不同方法做準備,具體更改完代碼如下。
4.按鈕綁定回調函數實現功能
最後給不同類型按鈕綁定上對應方法即可。等於,清空,退格都比較好理解,直接綁定方法,而功能1的數值和運算符號的相對複雜一定,因為回調需要傳遞參數,但是一般的寫法是無法傳遞參數的,所以這裡通過匿名函數構建了一個新函數,把之前的函數作為匿名函數表達式,這樣就可以傳遞參數了。
大功告成。
動圖效果
(全文完)
聊天功能具體實現過程
致富與槓桿你了解嗎?
python群聊工具實現(上)
python滑鼠連點器-測試版