先上原專案連結:https://github.com/taapasX28/Calculator_pyqt
python+Qt 開發的計算器
原專案介面和功能如圖所示:
科學計算的內容基本都有,但按照專案的提示,想給函式顯示圖片,計算器直接退出,無任何提示。諮詢無果,看原始碼。
在logic.py裡面找到關於函式圖形繪製的函式如下:
try裡面根本就沒有繪製圖形的語句。所以基本可以確定這個功能是不存在的。再檢視本專案所有.py檔案,也沒有引用到matlibplot.pyplt。
本人決定增加這個功能,先確定技術路線:matlibplot.pyplt + tkinter彈窗顯示,因為Qt還不是很熟悉,做起來麻煩不小。
需要做的大方向:增加一個專門畫圖.py檔案,在上述的plott函式裡,增加相關語句,進行具體選擇,給出具體的畫圖指令。
需要畫圖的函式有如下8個,紅框5個+黃框3個:
先從sin函式開始...
一步一步嘗試,做出如了這些圖形:
按下Show Graph鍵後:
按Quit Graph鍵,退出畫圖介面,計算器還可以繼續工作。比如繼續畫其他函式圖形,或做計算。
按Exit Calculator鍵後,直接退出計算器程式。
其他的函式,圖形如下:
cos函式:
tan函式:
ln函式:
sin-1函式:
其餘不再一一列出。
經驗總結:
一、看懂原始碼最重要,拿來主義可以開拓眼界,但是是隻有看懂原始碼,才能更好的利用和消化原專案。
二、現在動手比規劃重要,實際上增加這個功能時候,是沒有上面那些規劃的。都是一點一滴修正和總結的。
三、class類繼承真的很有用,減少不小程式碼量。先有個基礎畫圖類,然後在此基礎上,只要重寫一個函式,可以畫出任何圖形。
四、細節決定成敗,函式域、座標軸範圍、使用的計算函式,這裡面的坑真多。
最後儘量解耦,原函式plott變成如下,看起來有點多,主要還是裡面的坑多,需要分門別類。
對原始碼改動基本就是方框所示,外加自己寫的.py畫圖檔案。