基于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文件读写并使用mysql批量插入示例分享(python操作mysql)
Feb 17 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
python中函数总结之装饰器闭包详解
Jun 12 Python
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 Python
Python3 中文文件读写方法
Jan 23 Python
matplotlib 纵坐标轴显示数据值的实例
May 25 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
使用Tensorflow实现可视化中间层和卷积层
Jan 24 Python
Python找出列表中出现次数最多的元素三种方式
Feb 24 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
python 实现两个变量值进行交换的n种操作
Jun 02 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
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
PHP生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
JS实现简单日历特效
2020/01/03 Javascript
Vuejs中的watch实例详解(监听者)
2020/01/05 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[01:20]DOTA2 齐天大圣至宝动态展示
2016/12/13 DOTA
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Windows上使用Python增加或删除权限的方法
2018/04/24 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
python开发入门——列表生成式
2020/09/03 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
房地产销售经理岗位职责
2014/01/01 职场文书
会计专业导师推荐信
2014/03/08 职场文书
公益广告语集锦
2014/03/13 职场文书
党员群众路线承诺书
2014/05/20 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
政府四风问题整改措施
2014/10/04 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS