中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用python制作簡單計算器功能

發布時間:2022-02-07 11:05:13 來源:億速云 閱讀:185 作者:iii 欄目:開發技術

今天小編給大家分享一下怎么用python制作簡單計算器功能的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

效果如圖:

怎么用python制作簡單計算器功能

主要思路:

用列表保存按下的鍵,按下等于,轉換為字符串,利用內置函數eval計算字符串的值。

代碼:

from tkinter import *
 
W = 280 #窗口寬度
H = 460 #窗口高度
process_H = 110 #顯示運算過程的標簽高度
result_H = 50   #顯示運算結果的標簽高度
msFont = '微軟雅黑' #字體
fontSize = 20 #字體大小
 
btnBoderWidth = 0.5 #邊框寬度
btnColor = '#4F4F4F' #按鈕顏色
btnWidth = 70 #按鈕寬度
btnHeight = 60 #按鈕高度
 
mainWindows = Tk()
mainWindows.title('計算器')
mainWindows.minsize(W,H)
 
str_process = StringVar()
str_process.set("")
str_result = StringVar()
str_result.set("0")
 
process = Label(mainWindows,font=(msFont,fontSize),bg='orange',anchor='se',wraplength='280',textvariable=str_process)
process.place(width=W,height=process_H) #顯示運算過程的標簽
result = Label(mainWindows,font=(msFont,fontSize+10),bg='orange',anchor='se',textvariable=str_result)
result.place(y=process_H,width=W,height=result_H) #顯示運算結果的標簽
 
button_AC = Button(mainWindows,font=(msFont,fontSize),text='AC',fg='orange',bd=btnBoderWidth,command=lambda :clickAC())
button_AC.place(x=0,y=process_H+result_H,width=btnWidth,height=btnHeight)
button_back = Button(mainWindows,font=(msFont,fontSize),text='←',fg=btnColor,bd=btnBoderWidth,command=lambda :clickBack())
button_back.place(x=btnWidth,y=process_H+result_H,width=btnWidth,height=btnHeight)
button_div = Button(mainWindows,font=(msFont,fontSize),text='÷',fg=btnColor,bd=btnBoderWidth,command=lambda :clickOper('/'))
button_div.place(x=btnWidth*2,y=process_H+result_H,width=btnWidth,height=btnHeight)
button_mul = Button(mainWindows,font=(msFont,fontSize),text='×',fg=btnColor,bd=btnBoderWidth,command=lambda :clickOper('*'))
button_mul.place(x=btnWidth*3,y=process_H+result_H,width=btnWidth,height=btnHeight)
 
button_7 = Button(mainWindows,font=(msFont,fontSize),text='7',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('7'))
button_7.place(x=0,y=process_H+result_H+btnHeight,width=btnWidth,height=btnHeight)
button_8 = Button(mainWindows,font=(msFont,fontSize),text='8',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('8'))
button_8.place(x=btnWidth,y=process_H+result_H+btnHeight,width=btnWidth,height=btnHeight)
button_9 = Button(mainWindows,font=(msFont,fontSize),text='9',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('9'))
button_9.place(x=btnWidth*2,y=process_H+result_H+btnHeight,width=btnWidth,height=btnHeight)
button_minus = Button(mainWindows,font=(msFont,fontSize),text='-',fg=btnColor,bd=btnBoderWidth,command=lambda :clickOper('-'))
button_minus.place(x=btnWidth*3,y=process_H+result_H+btnHeight,width=btnWidth,height=btnHeight)
 
button_4 = Button(mainWindows,font=(msFont,fontSize),text='4',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('4'))
button_4.place(x=0,y=process_H+result_H+btnHeight*2,width=btnWidth,height=btnHeight)
button_5 = Button(mainWindows,font=(msFont,fontSize),text='5',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('5'))
button_5.place(x=btnWidth,y=process_H+result_H+btnHeight*2,width=btnWidth,height=btnHeight)
button_6 = Button(mainWindows,font=(msFont,fontSize),text='6',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('6'))
button_6.place(x=btnWidth*2,y=process_H+result_H+btnHeight*2,width=btnWidth,height=btnHeight)
button_add = Button(mainWindows,font=(msFont,fontSize),text='+',fg=btnColor,bd=btnBoderWidth,command=lambda :clickOper('+'))
button_add.place(x=btnWidth*3,y=process_H+result_H+btnHeight*2,width=btnWidth,height=btnHeight)
 
button_1 = Button(mainWindows,font=(msFont,fontSize),text='1',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('1'))
button_1.place(x=0,y=process_H+result_H+btnHeight*3,width=btnWidth,height=btnHeight)
button_2 = Button(mainWindows,font=(msFont,fontSize),text='2',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('2'))
button_2.place(x=btnWidth,y=process_H+result_H+btnHeight*3,width=btnWidth,height=btnHeight)
button_3 = Button(mainWindows,font=(msFont,fontSize),text='3',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('3'))
button_3.place(x=btnWidth*2,y=process_H+result_H+btnHeight*3,width=btnWidth,height=btnHeight)
button_equal = Button(mainWindows,font=(msFont,fontSize),text='=',bg='orange',fg=btnColor,bd=btnBoderWidth,command=lambda :clickEqual())
button_equal.place(x=btnWidth*3,y=process_H+result_H+btnHeight*3,width=btnWidth,height=btnHeight*2)
 
button_percent = Button(mainWindows,font=(msFont,fontSize),text='%',fg=btnColor,bd=btnBoderWidth,command=lambda :clickOper("%"))
button_percent.place(x=0,y=process_H+result_H+btnHeight*4,width=btnWidth,height=btnHeight)
button_0 = Button(mainWindows,font=(msFont,fontSize),text='0',fg=btnColor,bd=btnBoderWidth,command=lambda :clickNum('0'))
button_0.place(x=btnWidth,y=process_H+result_H+btnHeight*4,width=btnWidth,height=btnHeight)
button_point = Button(mainWindows,font=(msFont,fontSize),text='.',fg=btnColor,bd=btnBoderWidth,command=lambda :clickPoint())
button_point.place(x=btnWidth*2,y=process_H+result_H+btnHeight*4,width=btnWidth,height=btnHeight)
 
process_list = []
s_result = ""
isNum = [False] #上一位按下的是否是數字
point = [True] #小數點使用情況
def clickNum(num):  #按下數字
    isNum.append(True)
    point.append(point[-1]) #按下數字,小數點的標志不變
    process_list.append(num)
    s_process = "".join(process_list)
    str_process.set(s_process)
 
def clickOper(sign):#按下運算符
    global isNum,point
    if isNum[-1]:
        process_list.append(sign)
        isNum.append(False)
        point.append(True) #按下運算符,小數點標志為可以按下小數點
    else:
        process_list.pop()
        process_list.append(sign)
    s_process = "".join(process_list)
    str_process.set(s_process)
 
def clickEqual():#按下等于
    global s_result
    s_process = "".join(process_list)
    s_result = eval(s_process)
    s_result = str(s_result)[0:11] #結果只顯示11位
    str_process.set(s_process)
    str_result.set(s_result)
 
def clickAC():#按下清除
    global s_result,isNum,point
    s_result = "0"
    isNum = [False]  #狀態回到初始時候
    point = [True]
    process_list.clear()
    str_result.set(s_result)
    str_process.set("")
def clickBack(): #按下退格鍵
    global point, isNum
    if len(process_list) > 0:
        isNum.pop(-1) #刪除最后一位的狀態
        point.pop(-1)
        process_list.pop()
        s_process = "".join(process_list)
        str_process.set(s_process)
 
def clickPoint():#按下小數點
    global point,isNum
    if isNum[-1] and point[-1]:
        process_list.append(".")
        s_process = "".join(process_list)
        str_process.set(s_process)
        isNum.append(False)
        point.append(False)
 
mainWindows.mainloop()

以上就是“怎么用python制作簡單計算器功能”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

攀枝花市| 乡城县| 嘉义县| 浮梁县| 遂平县| 玉山县| 华容县| 盐城市| 通渭县| 绥宁县| 萍乡市| 林周县| 南通市| 电白县| 昌都县| 五原县| 长丰县| 宜宾县| 和政县| 洞头县| 武宁县| 大埔县| 革吉县| 图木舒克市| 和龙市| 沂源县| 古田县| 满洲里市| 睢宁县| 灵武市| 曲水县| 贵州省| 宜州市| 寿光市| 屏南县| 西乌珠穆沁旗| 连城县| 普洱| 惠来县| 海兴县| 福泉市|