当先锋百科网

首页 1 2 3 4 5 6 7

本文实例讲述了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()

运行效果:

201842691152959.gif?20183269129

PS:这里再为大家推荐几款计算工具供大家进一步参考借鉴:

在线一元函数(方程)求解计算工具:http://tools.jb51.net/jisuanqi/equ_jisuanqi

科学计算器在线使用_高级计算器在线计算:http://tools.jb51.net/jisuanqi/jsqkexue

在线计算器_标准计算器:http://tools.jb51.net/jisuanqi/jsq

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

本文标题: Python实现的计算器功能示例

本文地址: http://www.cppcns.com/jiaoben/python/226382.html