基于python的Tkinter实现一个简易计算器


Posted in Python onDecember 31, 2015

本文实例介绍了基于python的Tkinter实现简易计算器的详细代码,分享给大家供大家参考,具体内容如下

第一种:使用python 的 Tkinter实现一个简易计算器

#coding:utf-8
from Tkinter import *
import time
root = Tk()
def cacl(input_str):
if "x" in input_str:
ret = input_str.split("x")
return int(ret[0]) * int(ret[1])
def callback(n):
print n
def callback1(n):
print n
class App:
def __init__(self, master):
frame1 = Frame(master)
frame1.pack()
frame = Frame(master)
frame.pack()
Button(frame, text="1",command=lambda: callback(1) ).grid(row=0,column=0)
Button(frame, text="2",command=lambda: callback(2) ).grid(row=0,column=1)
Button(frame, text="3",command=lambda: callback(3) ).grid(row=0,column=2)
Button(frame, text="4",command=lambda: callback(4) ).grid(row=1,column=0)
Button(frame, text="5",command=lambda: callback(5) ).grid(row=1,column=1)
Button(frame, text="6",command=lambda: callback(6) ).grid(row=1,column=2)
Button(frame, text="7",command=lambda: callback(7) ).grid(row=2,column=0)
Button(frame, text="8",command=lambda: callback(8) ).grid(row=2,column=1)
Button(frame, text="9",command=lambda: callback(9) ).grid(row=2,column=2)
Button(frame, text="0",command=lambda: callback(0) ).grid(row=3,column=0)
Button(frame, text="+",command=lambda: callback1("+") ).grid(row=3,column=1)
Button(frame, text="-",command=lambda: callback1("-") ).grid(row=3,column=2)
Button(frame, text="*",command=lambda: callback1("*") ).grid(row=4,column=1)
Button(frame, text="/",command=lambda: callback1("/") ).grid(row=4,column=2)
Button(frame, text="=", command=self.say_hi).grid(row=4,column=0)
w = Label(frame1,text="输入结果")
w.pack()
self.e = Entry(frame1)
self.e.pack(padx=5)
w1 = Label(frame1,text="计算结果")
w1.pack()
v = StringVar()
e1 = Entry(frame1, textvariable=v)
v.set("")
self.v = v
e1.pack()
def say_hi(self):
print "hi there, everyone!",self.e.get()
input_str = self.e.get()
self.v.set(cacl(input_str))
app = App(root)
root.mainloop()

第二种:基于Tkinter用50行Python代码实现简易计算器
 Tkinter一般是python自带的,所以代码不需要其他组件,本程序是在python2.7版本实现的。

 主要涉及了tkinter的使用,函数定义和调用,匿名函数的使用,类成员函数定义等python基础知识,适合新手学习。

代码如下:

from Tkinter import * 
 
#创建横条型框架 
def frame(root, side): 
 w = Frame(root) 
 w.pack(side = side, expand = YES, fill = BOTH) 
 return w 
#创建按钮 
def button(root, side, text, command = None): 
 w = Button(root, text = text, command = command) 
 w.pack(side = side, expand = YES, fill = BOTH) 
 return w 
#继承了Frame类,初始化程序界面的布局 
class Calculator(Frame): 
 def __init__(self): 
 
 Frame.__init__(self) 
 
 self.pack(expand = YES, fill = BOTH) 
 self.master.title('Simple Calculater') 
 
 display = StringVar() 
 #添加输入框 
 Entry(self, relief = SUNKEN, 
 textvariable = display).pack(side = TOP, expand = YES, 
  fill = BOTH) 
 #添加横条型框架以及里面的按钮 
 for key in('123', '456', '789', '-0.'): 
 keyF = frame(self, TOP) 
 for char in key: 
 button(keyF, LEFT, char, lambda w = display, c = char:w.set(w.get() + c)) 
 #添加操作符按钮 
 opsF = frame(self, TOP) 
 for char in '+-*/=': 
 if char == '=': 
 btn = button(opsF, LEFT, char) 
 btn.bind('<ButtonRelease - 1>', lambda e, s = self, w = display:s.calc(w), '+') 
 
 else: 
 btn = button(opsF, LEFT, char, lambda w = display, s = '%s' %char:w.set(w.get() + s)) 
 #添加清除按钮 
 clearF = frame(self, BOTTOM) 
 button(clearF, LEFT, 'clear', lambda w = display:w.set('')) 
 
 #调用eval函数计算表达式的值 
 def calc(self, display): 
 try: 
 display.set(eval(display.get())) 
 except: 
 display.set("ERROR") 
#程序的入口 
if __name__ == '__main__': 
 print('ok') 
 Calculator().mainloop()

实现效果如下图:

基于python的Tkinter实现一个简易计算器

关于计算器的精彩文章请查看《计算器专题》 ,更多精彩等你来发现!

以上就是本文的全部内容,希望对大家的学习Python程序设计有所帮助。

Python 相关文章推荐
Python命名空间详解
Aug 18 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
详解Python列表赋值复制深拷贝及5种浅拷贝
May 15 Python
python 画二维、三维点之间的线段实现方法
Jul 07 Python
django 类视图的使用方法详解
Jul 24 Python
python实现抠图给证件照换背景源码
Aug 20 Python
python打包成so文件过程解析
Sep 28 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
Python编程快速上手——选择性拷贝操作案例分析
Feb 28 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 Python
Python编程编写完善的命令行工具
Sep 15 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 #Python
python实现爬虫统计学校BBS男女比例(一)
Dec 31 #Python
Python 功能和特点(新手必学)
Dec 30 #Python
python实现文本文件合并
Dec 29 #Python
Python验证码识别处理实例
Dec 28 #Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 #Python
You might like
PHP 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
用javascript实现画板的代码
2007/09/05 Javascript
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
2012/05/14 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
vue 插值 v-once,v-text, v-html详解
2018/01/19 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
2018/06/29 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
Tornado 多进程实现分析详解
2018/01/12 Python
python3 读取Excel表格中的数据
2018/10/16 Python
python之随机数函数的实现示例
2020/12/30 Python
python绘制雷达图实例讲解
2021/01/03 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
精彩的英文自荐信
2014/01/30 职场文书
出生公证委托书
2014/04/03 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python