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()

运行效果:

Python实现的计算器功能示例

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,计算器
0
投稿

猜你喜欢

  • 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
  • WxPython界面利用pubsub如何实现多线程控制

    2021-01-28 08:10:03
  • 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
  • ASP实现类似Java中的Linked HashMap类

    2010-04-03 20:49:00
  • python DataFrame数据分组统计groupby()函数的使用

    2021-11-19 07:04:53
  • python复制文件代码实现

    2022-08-29 09:28:11
  • Python运行提示缺少模块问题解决方案

    2023-06-24 02:16:23
  • 简单了解python中的与或非运算

    2021-03-20 01:45:02
  • 记录下两个正则表达式的使用

    2009-11-30 12:56:00
  • SQL Server数据库日志清除的两个方法

    2009-01-08 13:44:00
  • Python最大连续区间和动态规划

    2023-02-13 09:40:32
  • asp之家 网络编程 m.aspxhome.com