基于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中引用与复制用法实例分析
Jun 04 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
在java中如何定义一个抽象属性示例详解
Aug 18 Python
ubuntu17.4下为python和python3装上pip的方法
Jun 12 Python
Django中的文件的上传的几种方式
Jul 23 Python
python实现自动解数独小程序
Jan 21 Python
python中的global关键字的使用方法
Aug 20 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
python文字转语音实现过程解析
Nov 12 Python
基于python实现把图片转换成素描
Nov 13 Python
Python数据可视化图实现过程详解
Jun 12 Python
详解Scrapy Redis入门实战
Nov 18 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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
php date()日期时间函数详解
2010/05/16 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
2015/06/17 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
2017/08/07 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
jquery中文乱码的多种解决方法
2013/06/21 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
js中less常用的方法小结
2017/08/09 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
vue使用echarts实现水平柱形图实例
2020/09/09 Javascript
Python爬虫获取整个站点中的所有外部链接代码示例
2017/12/26 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
趣味游戏活动方案
2014/02/07 职场文书
品牌宣传方案
2014/03/21 职场文书
医院院务公开实施方案
2014/05/03 职场文书
信息工作经验交流材料
2014/05/28 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
医院志愿者活动总结
2015/05/06 职场文书
如何写观后感
2015/06/19 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技