我們常見的計算輔助工具有兩種,一種是古人發明的算盤,另一種就是我們現代人發明的計算器,與算盤相比,計算器無論是便利性還是計算速度都是優于算盤的,本文我們使用 Python 來實作一個簡易的計算器,
實作
我們幾乎每個人都用過計算器,大家對于計算器應該都是比較熟悉的,計算器整體也是比較簡單的,主要包括:顯示幕、鍵盤、運算的邏輯處理等,計算器的圖形界面我們使用 tkinter 庫實作,下面看一下具體實作程序,
首先,我們畫一個主視窗,代碼實作如下:
# 創建主視窗
tk = tkinter.Tk()
# 設定視窗大小和位置
tk.geometry('300x210+500+200')
# 不允許改變視窗大小
tk.resizable(False, False)
# 設定視窗標題
tk.title('計算器')
看一下效果:

我們接著畫顯示幕,代碼實作如下:
# 自動重繪字串變數,可用 set 和 get 方法進行傳值和取值
contentVar = tkinter.StringVar(tk, '')
# 創建單行文本框
contentEntry = tkinter.Entry(tk, textvariable=contentVar)
# 設定文本框為只讀
contentEntry['state'] = 'readonly'
# 設定文本框坐標及寬高
contentEntry.place(x=20, y=10, width=260, height=30)
看一下效果:

再接著畫鍵盤,代碼實作如下:
# 按鈕顯示內容
bvalue = ['C', '+', '-', '//', '2', '0', '1', '√', '3', '4', '5', '*', '6', '7', '8', '.', '9', '/', '**', '=']
index = 0
# 將按鈕進行 5x4 放置
for row in range(5):
for col in range(4):
d = bvalue[index]
index += 1
btnDigit = tkinter.Button(tk, text=d, command=lambda x=d: onclick(x))
btnDigit.place(x=20 + col * 70, y=50 + row * 30, width=50, height=20)
看一下效果:

界面畫完了,我們看一下處理運算邏輯的代碼,如下所示:
# 點擊事件
def onclick(btn):
# 運算子
operation = ('+', '-', '*', '/', '**', '//')
# 獲取文本框中的內容
content = contentVar.get()
# 如果已有內容是以小數點開頭的,在前面加 0
if content.startswith('.'):
content = '0' + content # 字串可以直接用+來增加字符
# 根據不同的按鈕作出不同的反應
if btn in '0123456789':
# 按下 0-9 在 content 中追加
content += btn
elif btn == '.':
# 將 content 從 +-*/ 這些字符的地方分割開來
lastPart = re.split(r'\+|-|\*|/', content)[-1]
if '.' in lastPart:
# 資訊提示對話框
tkinter.messagebox.showerror('錯誤', '重復出現的小數點')
return
else:
content += btn
elif btn == 'C':
# 清除文本框
content = ''
elif btn == '=':
try:
# 對輸入的運算式求值
content = str(eval(content))
except:
tkinter.messagebox.showerror('錯誤', '運算式有誤')
return
elif btn in operation:
if content.endswith(operation):
tkinter.messagebox.showerror('錯誤', '不允許存在連續運算子')
return
content += btn
elif btn == '√':
# 從 . 處分割存入 n,n 是一個串列
n = content.split('.')
# 如果串列中所有的都是數字,就是為了檢查運算式是不是正確的
if all(map(lambda x: x.isdigit(), n)):
content = eval(content) ** 0.5
else:
tkinter.messagebox.showerror('錯誤', '運算式錯誤')
return
# 將結果顯示到文本框中
contentVar.set(content)
整體實作完了之后,我們來演示一下,看一下效果:

是不是有內味了,
打包
為了更加方便的使用,我們可以將 Python 代碼打包成 exe 檔案,打包我們使用 pyinstaller,安裝用 pip install pyinstaller 命令即可,
打包時我們使用 pyinstaller --onefile --nowindowed counter.py 命令即可,此時打包生成的檔案是使用的默認圖示,如果我們想指定自己的圖示可以添加引數 --icon="xxx\xxx.ico",打包生成的檔案在 dist 目錄,如下圖所示:

此時,我們直接運行 exe 檔案就行了,
總結
本文我們使用 Python 實作了一個簡易的計算器,大家如果有興趣的話,可以嘗試添加更多的功能以及對鍵盤進行個性化修改,
原始碼在公眾號 Python小二 后臺回復 200616 獲取,
本文非首發于個人號
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/259745.html
標籤:python
