使用python的tkinter模块制作一个计算器
生活随笔
收集整理的這篇文章主要介紹了
使用python的tkinter模块制作一个计算器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
使用tkinter模塊制作的一個簡單的計算器
由于剛學(xué)這個模塊,所以做的不是很好
截圖:
點擊計算后算式區(qū)的值會改成結(jié)果,可自行在數(shù)字觸發(fā)的函數(shù)中添加數(shù)字輸入就進行計算回顯的功能
代碼如下:
import tkinter as tk import tkinter.messagebox as messagewindow = tk.Tk() window.title('不成熟的計算器') # 寬280,高350 # 不設(shè)置寬高,大小自動跟隨內(nèi)部控件 # window.geometry('250x280') window['background'] = 'blue' # 窗體禁止縮放 window.resizable(width=False, height=False) # 計算公式 show_formula = tk.StringVar() # 計算結(jié)果 show_result = tk.StringVar()# 創(chuàng)建顯示算數(shù)欄 # 需要指定寬度 否者 會隨著輸入的字符增多被拉長 # 用來顯示要計算的算式 formulaLabel = tk.Label(window, height=1, width=4, textvariable=show_formula,justify=tk.LEFT, anchor='se', font=('正楷', 12)) formulaLabel.grid(row=0, column=0, columnspan=4, sticky=tk.W + tk.E) # 用來展示結(jié)果 calculationResultsLabel = tk.Label(window, height=2, width=4, textvariable=show_result,justify=tk.LEFT, anchor='se', font=('正楷', 19)) calculationResultsLabel.grid(row=1, column=0, columnspan=4, sticky=tk.W + tk.E)# 用來創(chuàng)建按鈕 # row 行 # column 列 # operator 操作符(例如:+) # text 控件名稱 # columnspan 占幾列 # width 寬度 def createButton(row, column, operator, text, columnspan=None, width=5):button = tk.Button(window, command=lambda: cal(operator),width=width, text=text, font=('正楷', 15))if columnspan is None:button.grid(row=row, column=column, padx=2, pady=4)else:button.grid(row=row, column=column, columnspan=columnspan, padx=2, pady=4)# 第一行按鈕 createButton(2, 0, '1', '1') createButton(2, 1, '2', '2') createButton(2, 2, '3', '3') createButton(2, 3, '+', '+') # 第二行按鈕 createButton(3, 0, '4', '4') createButton(3, 1, '5', '5') createButton(3, 2, '6', '6') createButton(3, 3, '-', '-') # 第三行按鈕 createButton(4, 0, '7', '7') createButton(4, 1, '8', '8') createButton(4, 2, '9', '9') createButton(4, 3, '*', '*') # 第四行按鈕 createButton(5, 0, '0', '0') createButton(5, 1, '.', '.') createButton(5, 2, 'back', 'back') createButton(5, 3, '/', '/') # 第五行按鈕 createButton(6, 0, 'clear', '清 空', columnspan=2, width=12) createButton(6, 2, '=', '計 算', columnspan=2, width=12)# 用來保存結(jié)果 formula = ''# 點擊按鈕調(diào)用的函數(shù) def cal(key):global formula# 已經(jīng)有的前一個key 例如1+2+ already_key為+already_key = ''# 截取算式最后一位,后面需要判斷最后一位是否是運算符if len(formula) > 0:already_key = formula[-1]# 下面的* /處理代碼是類似的 為了便于理解分開了# 加if key == '+':if formula != '':# 如果前面是*或者/就將其改成+if already_key == '*' or already_key == '/' or already_key == '.':formula = formula[0:-1] + keyelif already_key != '+' and already_key != '-' and already_key != '':formula += keyelif key == '-':if already_key == '-':formula = formula[0:-1] + '+'elif already_key == '+' or already_key == '.':formula = formula[0:-1] + '-'else:formula += key# 除法和乘法還要判斷倒數(shù)第二個是不是* /號elif key == '*':if formula != '':# 如果最后一個為+ - / .的話if already_key == '+' or already_key == '-' or already_key == '/' or already_key == '.':# 如果算式長于大于等于2位if len(formula) >= 2:# 如果倒數(shù)第二個字符不是*或者/ 防止出現(xiàn)* /之后再輸入*的事件 跟后面減法(-)處理有關(guān)聯(lián)if formula[-2] != '*' and formula[-2] != '/':formula = formula[0:-1] + keyelse:formula = formula[0:-1] + key# 如果前面是數(shù)字就可以直接添加到最后elif already_key != key:formula += keyelif key == '/':if formula != '':if already_key == '+' or already_key == '-' or already_key == '*' or already_key == '.':if len(formula) >= 2:if formula[-2] != '*' and formula[-2] != '/':formula = formula[0:-1] + keyelse:formula = formula[0:-1] + keyelif already_key != key:formula += key# 輸入點的時候elif key == '.':# 如果最后一個不是運算符和.則添加到最后一個if formula != '' and already_key != '+' and already_key != '-' \and already_key != '*' and already_key != '/' and already_key != '.':formula += keyelif key == '=':# 進行計算 計算要做出錯處理 要判斷最后一個是不是運算符號if len(formula) < 1:passelif already_key != '*' and already_key != '/' and already_key != '+' \and already_key != '-':try:# 通過eval函數(shù)計算v = eval(formula)show_result.set(v)# 如果計算之后,講算式改成結(jié)果 eval返回值是int類型 所以要轉(zhuǎn)為字符型復(fù)制給暫存formula = str(v)show_formula.set(v)except ZeroDivisionError:message.showerror(title='警告', message='除數(shù)不能為0')else:message.showinfo(title='溫馨提示', message='請檢查您的公式,最后一個不能為運算符!')elif key == 'clear':# 清空顯示區(qū)show_formula.set('')show_result.set('')# 清空暫存區(qū)formula = ''elif key == 'back':# 刪除if len(formula) >= 1:formula = formula[0:-1]else:# 這里輸入的全是數(shù)字formula += keyshow_formula.set(formula)window.mainloop()總結(jié)
以上是生活随笔為你收集整理的使用python的tkinter模块制作一个计算器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小红书文案怎么编辑制作?小红书上的文案怎
- 下一篇: 年薪买房问题