日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

發布時間:2023/11/27 生活经验 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么用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制作简易计算器,能够记录你使用的情况...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。