Python实现的计算器功能示例
作者:tian_shl 时间:2023-02-16 22:25:30
本文实例讲述了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
标签:Python,计算器
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python实现网站用户名密码自动登录功能
2021-07-05 09:48:13
scrapy处理python爬虫调度详解
2021-09-10 11:30:00
php session 预定义数组
2023-11-15 01:15:22
asp如何让服务器延时执行更改后的数据?
2010-05-13 16:35:00
python实现将多个文件分配到多个文件夹的方法
2023-04-13 20:48:46
ASP可显示和隐藏的树型菜单
2007-10-01 14:40:00
常见SQL Server 2000漏洞及其相关利用
2007-10-01 14:45:00
![](https://img.aspxhome.com/file/UploadPic/200710/1/2007101145110349s.gif)
WxPython界面利用pubsub如何实现多线程控制
2021-01-28 08:10:03
![](https://img.aspxhome.com/file/2023/7/77877_0s.png)
ASP访问SQL Server内置对象
2008-04-05 06:49:00
django 通过ajax完成邮箱用户注册、激活账号的方法
2022-02-19 05:59:57
ASP写的不错的"数字分页"涵数
2008-10-19 17:21:00
python基础教程之获取本机ip数据包示例
2022-09-28 13:31:45
![](https://img.aspxhome.com/file/2023/6/81596_0s.jpg)
ASP实现类似Java中的Linked HashMap类
2010-04-03 20:49:00
python DataFrame数据分组统计groupby()函数的使用
2021-11-19 07:04:53
![](https://img.aspxhome.com/file/2023/8/69268_0s.png)
python复制文件代码实现
2022-08-29 09:28:11
Python运行提示缺少模块问题解决方案
2023-06-24 02:16:23
![](https://img.aspxhome.com/file/2023/4/66914_0s.png)
简单了解python中的与或非运算
2021-03-20 01:45:02
![](https://img.aspxhome.com/file/2023/5/67915_0s.png)
记录下两个正则表达式的使用
2009-11-30 12:56:00
SQL Server数据库日志清除的两个方法
2009-01-08 13:44:00
Python最大连续区间和动态规划
2023-02-13 09:40:32
![](https://img.aspxhome.com/file/2023/6/69516_0s.png)