本文實例講述了Python實現的計算器功能。分享給大家供大家參考,具體如下:
源碼:
# -*- coding:utf-8 -*-#! python2from tkinter import *__author__ = 'tianshl'__date__ = '2017/10/16'class Application(Frame): def __init__(self): Frame.__init__(self) self.grid() self.mem = '' # 內存中的數據 self.opt = '' # 操作符 self.display = StringVar() # 顯示的數據 self.display.set('0') # 初始值 self.need_cls = False # 是否需要清屏 self.create_widgets() # 清空 def clear(self): self.mem = '' self.display.set('0') # 取反 def negative(self): self.display.set(eval('-' + self.display.get())) # 四則運算 def option(self, opt): if not self.need_cls: self.calculate() self.opt = opt self.need_cls = True self.mem = self.display.get() # 計算結果 def calculate(self): if self.opt: try: self.display.set(eval(self.mem + self.opt + self.display.get())) except Exception: self.display.set('錯誤') self.need_cls = True self.opt = '' self.mem = '' # 百分比 def percent(self): base = float(self.mem or 1) / 100 display = eval('{}*{}'.format(self.display.get(), base)) int_display = int(display) display = int_display if display == int_display else display self.display.set(display) self.need_cls = True # 輸入 def input(self, key): if self.need_cls: self.display.set('0') self.need_cls = False display = self.display.get() if display == '0' and key != '.': self.display.set(key) else: if '.' in display and key == '.': return self.display.set(display + key) # 創建組件 def create_widgets(self): # 顯示框 Entry(self, textvariable=self.display, state="readonly", width=35).grid( row=0, column=0, columnspan=4) # 鍵盤 keyboards = [ ['C', '+/-', '%', '/'], ['7', '8', '9', '*'], ['4', '5', '6', '-'], ['1', '2', '3', '+'], ['0', '.', '='] ] for row, keys in enumerate(keyboards): row_num = 3 + row for col, key in enumerate(keys): if key == 'C': command = self.clear elif key == '+/-': command = self.negative elif key == '%': command = self.percent elif key in ['+', '-', '*', '/']: command = lambda s=key: self.option(s) elif key == '=': command = self.calculate else: command = lambda s=key: self.input(s) bt = Button(self, text=key, command=command, width=6) bt.grid(row=row_num, column=col)app = Application()# 設置窗口標題:app.master.title('www.jb51.net - 計算器')# 設置窗口尺寸/位置app.master.geometry("326x170+200+200")# 設置窗口不可變app.master.resizable(width=False, height=False)# 主消息循環:app.mainloop()運行效果:

PS:這里再為大家推薦幾款計算工具供大家進一步參考借鑒:
在線一元函數(方程)求解計算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi
新聞熱點
疑難解答