基于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代码(逐级优化)
May 25 Python
记录Django开发心得
Jul 16 Python
python使用mysql数据库示例代码
May 21 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
Python实现查找最小的k个数示例【两种解法】
Jan 08 Python
python根据txt文本批量创建文件夹
Dec 08 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
python中 _、__、__xx__()区别及使用场景
Jun 30 Python
python tkinter实现定时关机
Apr 21 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传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
js弹出确认是否删除对话框
2014/03/27 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
基于JS实现导航条之调用网页助手小精灵的方法
2016/06/17 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
JSONP跨域请求
2017/03/02 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
Python学习笔记_数据排序方法
2014/05/22 Python
进一步探究Python中的正则表达式
2015/04/28 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
仿CSDN Blog返回页面顶部功能实现原理及代码
2013/06/30 HTML / CSS
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
remote接口和home接口主要作用
2013/05/15 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
优秀应届毕业生自荐书
2014/06/29 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
css3中2D转换之有趣的transform形变效果
2022/02/24 HTML / CSS