基于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之开始真正编程
Sep 12 Python
Python中pygal绘制雷达图代码分享
Dec 07 Python
python http接口自动化脚本详解
Jan 02 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Python中捕获键盘的方式详解
Mar 28 Python
详解Python中pandas的安装操作说明(傻瓜版)
Apr 08 Python
Python使用sklearn实现的各种回归算法示例
Jul 04 Python
浅谈tensorflow中张量的提取值和赋值
Jan 19 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
May 11 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
Python按顺序遍历并读取文件夹中文件
Apr 29 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
分析PHP中单双引号的误区和双引号小隐患
2016/07/19 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
ie focus bug 解决方法
2009/09/03 Javascript
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
事件模型在各浏览器中存在差异
2010/10/20 Javascript
DIV+CSS+JS不间断横向滚动实现代码
2013/03/19 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
[01:21]DOTA2周边文化主题展 神秘商店火热开售
2017/07/30 DOTA
[01:10]DOTA2 Supermajor:英雄,由我们见证
2018/05/14 DOTA
Python写的一个简单DNS服务器实例
2014/06/04 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
浅谈Python中函数的参数传递
2016/06/21 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
Python3实现定时任务的四种方式
2019/06/03 Python
如何使用python传入不确定个数参数
2020/02/18 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
药物学专业学生的自我评价
2013/10/27 职场文书
文言文形式的学生求职信
2013/12/03 职场文书
法学专业自我鉴定
2014/02/05 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
培训感想范文
2015/08/07 职场文书
新员工入职感言范文!
2019/07/04 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python