Python實(shí)現(xiàn)的計(jì)算器功能示例
本文實(shí)例講述了Python實(shí)現(xiàn)的計(jì)算器功能。分享給大家供大家參考,具體如下:
源碼:
# -*- 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 = '' # 內(nèi)存中的數(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()))
# 四則運(yùn)算
def option(self, opt):
if not self.need_cls:
self.calculate()
self.opt = opt
self.need_cls = True
self.mem = self.display.get()
# 計(jì)算結(jié)果
def calculate(self):
if self.opt:
try:
self.display.set(eval(self.mem + self.opt + self.display.get()))
except Exception:
self.display.set('錯(cuò)誤')
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()
# 設(shè)置窗口標(biāo)題:
app.master.title('chabaoo.cn - 計(jì)算器')
# 設(shè)置窗口尺寸/位置
app.master.geometry("326x170+200+200")
# 設(shè)置窗口不可變
app.master.resizable(width=False, height=False)
# 主消息循環(huán):
app.mainloop()
運(yùn)行效果:

PS:這里再為大家推薦幾款計(jì)算工具供大家進(jìn)一步參考借鑒:
在線一元函數(shù)(方程)求解計(jì)算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi
科學(xué)計(jì)算器在線使用_高級(jí)計(jì)算器在線計(jì)算:
http://tools.jb51.net/jisuanqi/jsqkexue
在線計(jì)算器_標(biāo)準(zhǔn)計(jì)算器:
http://tools.jb51.net/jisuanqi/jsq
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
一文帶你深入理解Flask中的Session和Cookies
Flask,作為一個(gè)靈活的微型 web 框架,提供了會(huì)話(Session)和 Cookies 管理的能力,本文將深入探討 Flask 中的會(huì)話和 Cookies 的概念、工作機(jī)制以及應(yīng)用實(shí)例,希望對(duì)大家有所幫助2023-12-12
OpenCV計(jì)算平均值cv::mean實(shí)例代碼
函數(shù)cv::mean計(jì)算數(shù)組元素的平均值M,每個(gè)通道都是獨(dú)立的,并返回這個(gè)平均值,這篇文章主要給大家介紹了關(guān)于OpenCV計(jì)算平均值cv::mean的相關(guān)資料,需要的朋友可以參考下2021-08-08
python實(shí)現(xiàn)百度文庫(kù)自動(dòng)化爬取
項(xiàng)目是合法項(xiàng)目,只是進(jìn)行數(shù)據(jù)解析而已,不能下載看不到的內(nèi)容.部分文檔在電腦端不能預(yù)覽,但是在手機(jī)端可以預(yù)覽,所有本項(xiàng)目把瀏覽器瀏覽格式改成手機(jī)端,支持Windows和Ubuntu. 本項(xiàng)目使用的是chromedriver來控制chrome來模擬人來操作來進(jìn)行文檔爬取2021-04-04
在Python中使用defaultdict初始化字典以及應(yīng)用方法
今天小編就為大家分享一篇在Python中使用defaultdict初始化字典以及應(yīng)用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10
python在openstreetmap地圖上繪制路線圖的實(shí)現(xiàn)
這篇文章主要介紹了python在openstreetmap地圖上繪制路線圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
解決Python3錯(cuò)誤:SyntaxError: unexpected EOF while
這篇文章主要介紹了解決Python3錯(cuò)誤:SyntaxError: unexpected EOF while parsin問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

