怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...
話不多說,首先先看效果圖,它能夠記錄你在使用過程中的歷史,方便你查看是否有錯:
接下來就仔細分析一下是如何制作的:
簡易計算器
第一步:導入資源庫
在過程中使用到了tkinter這個資源庫,win+R打開CMD輸入:pip install python-tk。
python的引入方式為:import tkinter
第二步:創建窗口
定義窗口并設置窗口標題:
# 創建窗口
window = tkinter.Tk()
window.title("計算器")
第三步:變量初始化
設置算式記錄變量以及運算歷史變量的值:
# 記錄算式
expstr = ""
# 記錄運算歷史
history_label_obj_list = []
第四步:定義按鈕點擊事件函數
計算器有很多按鈕,當我們點擊相應的按鈕時會觸發相應的事件,這時我們就需要定義一個按鈕點擊事件的函數。
# 按鈕點擊事件
def onClick(key):
global expstr # 定義全局變量
if key == "=":
jieguo = round(eval(expstr), 2)# 結果保留2位小數
result["text"] = jieguo
frame_right.pack()
# 將算式記錄顯示出來
t = tkinter.Label(frame_inner, text=expstr + "=" + str(jieguo),
background="seashell")
t.pack()
history_label_obj_list.append(t)# 容器存儲算式記錄
elif key == "AC":
result["text"] = ""
expstr = ""
else:
expstr = expstr + str(key)
result["text"] = expstr
第五步:定義清空運算歷史函數
該計算器包含有記錄運算歷史的功能,當我們點擊清空的時候,會調用我們定義的清空運算歷史的函數。
# 清空運算歷史
def clean_history():
for x in history_label_obj_list:
print(x)
x.destroy()
第六步:設置數字0-9按鈕
將各個按鈕設置長為6,寬為2,分別在frame_left。
數字7-9分布在第二行的第0-2列:
num7 = tkinter.Button(frame_left, text="7", width=6, height=2, command=lambda: onClick(7))
num7.grid(row=2,column=0)
num8 = tkinter.Button(frame_left, text="8", width=6, height=2, command=lambda: onClick(8))
num8.grid(row=2,column=1)
num9 = tkinter.Button(frame_left, text="9", width=6, height=2, command=lambda: onClick(9))
num9.grid(row=2,column=2)
數字4-6分布在第三行的第0-2列:
num4 = tkinter.Button(frame_left, text="4", width=6, height=2, command=lambda: onClick(4))
num4.grid(row=3,column=0)
num5 = tkinter.Button(frame_left, text="5", width=6, height=2, command=lambda: onClick(5))
num5.grid(row=3,column=1)
num6 = tkinter.Button(frame_left, text="6", width=6, height=2, command=lambda: onClick(6))
num6.grid(row=3,column=2)
數字1-3分布在第四行的第0-2列:
num1 = tkinter.Button(frame_left, text="1", width=6, height=2, command=lambda: onClick(1))
num1.grid(row=4,column=0)
num2 = tkinter.Button(frame_left, text="2", width=6, height=2, command=lambda: onClick(2))
num2.grid(row=4,column=1)
num3 = tkinter.Button(frame_left, text="3", width=6, height=2, command=lambda: onClick(3))
num3.grid(row=4,column=2)
數字0分布在第五行的第0列,長設置為12,寬為2:
num0 = tkinter.Button(frame_left, text="0", width=12, height=2, command=lambda: onClick(0))
num0.grid(row=5,column=0,columnspan=2)
第七步:設置運算符號按鈕
該計算器的運算符號包括+、-、*、/、%、.,同時還包括一個清空按鈕AC。
negative = tkinter.Button(frame_left, text="+/-", width=6, height=2, command=lambda: onClick("-"))
negative.grid(row=1,column=1)
percent = tkinter.Button(frame_left, text="%", width=6, height=2, command=lambda: onClick("/100"))
percent.grid(row=1,column=2)
division = tkinter.Button(frame_left, text="/", width=6, height=2, command=lambda: onClick("/"))
division.grid(row=1,column=3)
multi = tkinter.Button(frame_left, text="*", width=6, height=2, command=lambda: onClick("*"))
multi.grid(row=2,column=3)
sub = tkinter.Button(frame_left, text="-", width=6, height=2, command=lambda: onClick("-"))
sub.grid(row=3,column=3)
add = tkinter.Button(frame_left, text="+", width=6, height=2, command=lambda: onClick("+"))
add.grid(row=4,column=3)
point = tkinter.Button(frame_left, text=".", width=6, height=2, command=lambda: onClick("."))
point.grid(row=5,column=2)
equals = tkinter.Button(frame_left, text="=", width=6, height=2, command=lambda: onClick("="))
equals.grid(row=5,column=3)
第八步:運行結果
最初結果:
運算后結果:
第九步:完整代碼
import tkinter
# 創建窗口
window = tkinter.Tk()
window.title("計算器")
# 記錄算式
expstr = ""
# 記錄運算歷史
history_label_obj_list = []
# 按鈕點擊事件
def onClick(key):
global expstr # 定義全局變量
if key == "=":
jieguo = round(eval(expstr), 2)# 結果保留2位小數
result["text"] = jieguo
frame_right.pack()
# 將算式記錄顯示出來
t = tkinter.Label(frame_inner, text=expstr + "=" + str(jieguo),
background="seashell")
t.pack()
history_label_obj_list.append(t)# 容器存儲算式記錄
elif key == "AC":
result["text"] = ""
expstr = ""
else:
expstr = expstr + str(key)
result["text"] = expstr
frame_grap = tkinter.Frame(window)
frame_grap.pack(fill="y", side="left")# 按y坐標填滿放在左側
frame_left = tkinter.Frame(window)
# 定義一個標簽,設置相關參數,存放結果
result = tkinter.Label(frame_left, bg="seashell", text="0", height=2,font=("Arial", 34, "bold"))
result.grid(row=0, column=0, columnspan=4, sticky=tkinter.E)# 采用表格式布局管理器gid
# 設置“清空”按鈕
ac = tkinter.Button(frame_left, text="AC", width=6, height=2, command=lambda: onClick("AC"))
ac.grid(row=1,column=0)# (第1行,第0列)
#
negative = tkinter.Button(frame_left, text="+/-", width=6, height=2, command=lambda: onClick("-"))
negative.grid(row=1,column=1)
percent = tkinter.Button(frame_left, text="%", width=6, height=2, command=lambda: onClick("/100"))
percent.grid(row=1,column=2)
division = tkinter.Button(frame_left, text="/", width=6, height=2, command=lambda: onClick("/"))
division.grid(row=1,column=3)
num7 = tkinter.Button(frame_left, text="7", width=6, height=2, command=lambda: onClick(7))
num7.grid(row=2,column=0)
num8 = tkinter.Button(frame_left, text="8", width=6, height=2, command=lambda: onClick(8))
num8.grid(row=2,column=1)
num9 = tkinter.Button(frame_left, text="9", width=6, height=2, command=lambda: onClick(9))
num9.grid(row=2,column=2)
multi = tkinter.Button(frame_left, text="*", width=6, height=2, command=lambda: onClick("*"))
multi.grid(row=2,column=3)
num4 = tkinter.Button(frame_left, text="4", width=6, height=2, command=lambda: onClick(4))
num4.grid(row=3,column=0)
num5 = tkinter.Button(frame_left, text="5", width=6, height=2, command=lambda: onClick(5))
num5.grid(row=3,column=1)
num6 = tkinter.Button(frame_left, text="6", width=6, height=2, command=lambda: onClick(6))
num6.grid(row=3,column=2)
sub = tkinter.Button(frame_left, text="-", width=6, height=2, command=lambda: onClick("-"))
sub.grid(row=3,column=3)
num1 = tkinter.Button(frame_left, text="1", width=6, height=2, command=lambda: onClick(1))
num1.grid(row=4,column=0)
num2 = tkinter.Button(frame_left, text="2", width=6, height=2, command=lambda: onClick(2))
num2.grid(row=4,column=1)
num3 = tkinter.Button(frame_left, text="3", width=6, height=2, command=lambda: onClick(3))
num3.grid(row=4,column=2)
add = tkinter.Button(frame_left, text="+", width=6, height=2, command=lambda: onClick("+"))
add.grid(row=4,column=3)
num0 = tkinter.Button(frame_left, text="0", width=12, height=2, command=lambda: onClick(0))
num0.grid(row=5,column=0,columnspan=2)
point = tkinter.Button(frame_left, text=".", width=6, height=2, command=lambda: onClick("."))
point.grid(row=5,column=2)
equals = tkinter.Button(frame_left, text="=", width=6, height=2, command=lambda: onClick("="))
equals.grid(row=5,column=3)
frame_left.pack(fill="y", side="left")
frame_right = tkinter.Frame(window, width=200)
tkinter.Label(frame_right, text="運算歷史", font=("Arial", 14, "underline bold")).pack()
frame_inner = tkinter.Frame(frame_right)
frame_inner.pack(fill="x", side="top")
# 清空運算歷史
def clean_history():
for x in history_label_obj_list:
print(x)
x.destroy()
cls_button = tkinter.Button(frame_right, text="清空", command=lambda: clean_history())
cls_button.pack(fill="x", side="top")
window.mainloop()
原文地址:手把手教你用python制作簡易計算器,能夠記錄你使用的情況_ywsydwsbn的博客-CSDN博客_手把手帶你用python做計算機?blog.csdn.net
總結
以上是生活随笔為你收集整理的怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 桂枝明月祝福贺的下一句是什么呢?
- 下一篇: python求平方根的代码_Python