Python实现的计算器功能示例
作者:tian_shl 发布时间:2023-02-16 22:25:30
标签:Python,计算器
本文实例讲述了Python实现的计算器功能。分享给大家供大家参考,具体如下:
源码:
# -*- 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 = '' # 内存中的数据
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
科学计算器在线使用_高级计算器在线计算:
http://tools.jb51.net/jisuanqi/jsqkexue
在线计算器_标准计算器:
http://tools.jb51.net/jisuanqi/jsq
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/xiaobuding007/article/details/78267773
0
投稿
猜你喜欢
- 一、软件包a) freetds-stable.gzb) php-5.2.12.tar.gz二、安装步骤a) tar zxvf freetds
- 今天交流会上,分享前端的开发经验,有一条虽然很快带过,但是我倒是印象蛮深刻的,就写点小结来分享一下吧。不知道是标准害了大家还是大家害了标准,
- gchart:基于google图表API的jquery组件全攻略——入门gchart是基于google图表API的jquery组件。使用gc
- 平面设计 常用尺寸 三折页广告 标准尺寸: (A4)210mm x 285mm普通宣传册 标准尺寸: (A4)210mm x 285mm文件
- type指示type要使用的验证器。可识别的类型值为:string:类型必须为string。type 默认是 string// 校验stri
- 访问FTP,无非两件事情:upload和download,最近在项目中需要从ftp下载大量文件,然后我就试着去实验自己的ftp操作类,如下(
- 一、可以使用以下步骤获取两个以逗号分割的字符串的并集:使用explode函数将两个字符串转换为数组,以便可以对其执行操作。使用array_m
- 分页查询是经常能够遇到的问题,我们首先看看分页查询存在的理由:方便用户:用户不可能一次察看所有数据,所以一页一页的翻看比较好。提高性能:一次
- Item Pipeline简介Item管道的主要责任是负责处理有蜘蛛从网页中抽取的Item,他的主要任务是清晰、验证和存储数据。当页面被蜘蛛
- PHP mysqli_sqlstate() 函数返回最后一个 MySQL 操作的 SQLSTATE 错误代码:<?php// 假定数据
- 无意中看到一位学员的屏保,感觉挺有意思的,就把它实现了下来效果如下:<!DOCTYPE html PUBLIC "-//W3
- 通过本接口可以查询圆通快递、申通快递、ems快递、韵达快递等快递单号查询信息,无需其他额外开发,非常方便首先到www.aikuaidi.cn
- 1、互动流通的活跃度是社区网站的关键,产品设计者大都需要在此猛下药。facebook有利用率最高的minifeed,myspace有“好友的
- PHP计算字符串用strlen()只能得到字符串长度,不是宽高像素,使用到了php函数ImageTTFBBox(),就可以根据字体的大小和所
- 下列语句部分是Mssql语句,不可以在access中使用。SQL语句分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECL
- 本来在网上有不少关于这方面的文章,可是我找了好久也没看到把(可能我的搜索水平有线把)不过倒是聊天室的很多。如何统计会员再线状态,希望对刚开始
- 对于Linux用户而言,命令行操作我们已经非常熟悉了。与其他流行的操作系统不同,在Linux社区中,使用命令行与使用图形用户界面执行类似任务
- 最近设计一个优惠券列表,有个属性是有效日期,因为空间有限,必须要把开始日期和结束日期在一行显示,这样就出现一排的数字,日期有好几种我们习惯的
- Numba是Python的即时编译器,在使用NumPy数组和函数以及循环的代码上效果最佳。使用Numba的最常见方法是通过其装饰器集合,这些
- 随着网站访问量的加大,每次从数据库读取都是以效率作为代价的,很多用ACCESS作数据库的更会深有体会,静态页加在搜索时,也会被优先考虑。互联