Python實現(xiàn)的計算器功能示例
本文實例講述了Python實現(xiàn)的計算器功能。分享給大家供大家參考,具體如下:
源碼:
# -*- coding:utf-8 -*-
#! python2
from tkinter import *
__author__ = 'tianshl'
__date__ = '2017/10/16'
class Application(Frame):
def __init__(self):
Frame.__init__(self)
self.grid()
self.mem = '' # 內存中的數(shù)據(jù)
self.opt = '' # 操作符
self.display = StringVar() # 顯示的數(shù)據(jù)
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)
# 創(chuàng)建組件
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.dbjr.com.cn - 計算器')
# 設置窗口尺寸/位置
app.master.geometry("326x170+200+200")
# 設置窗口不可變
app.master.resizable(width=False, height=False)
# 主消息循環(huán):
app.mainloop()
運行效果:

PS:這里再為大家推薦幾款計算工具供大家進一步參考借鑒:
在線一元函數(shù)(方程)求解計算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi
科學計算器在線使用_高級計算器在線計算:
http://tools.jb51.net/jisuanqi/jsqkexue
在線計算器_標準計算器:
http://tools.jb51.net/jisuanqi/jsq
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數(shù)學運算技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
一文帶你深入理解Flask中的Session和Cookies
Flask,作為一個靈活的微型 web 框架,提供了會話(Session)和 Cookies 管理的能力,本文將深入探討 Flask 中的會話和 Cookies 的概念、工作機制以及應用實例,希望對大家有所幫助2023-12-12
在Python中使用defaultdict初始化字典以及應用方法
今天小編就為大家分享一篇在Python中使用defaultdict初始化字典以及應用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
python在openstreetmap地圖上繪制路線圖的實現(xiàn)
這篇文章主要介紹了python在openstreetmap地圖上繪制路線圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07
解決Python3錯誤:SyntaxError: unexpected EOF while
這篇文章主要介紹了解決Python3錯誤:SyntaxError: unexpected EOF while parsin問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

