基于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 时间操作例子和时间格式化参数小结
Apr 24 Python
python获取标准北京时间的方法
Mar 24 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
在python里从协程返回一个值的示例
Feb 19 Python
linux环境下Django的安装配置详解
Jul 22 Python
python经典趣味24点游戏程序设计
Jul 26 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
教你怎么用python爬取爱奇艺热门电影
May 20 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 Ajax中文乱码问题解决方法
2009/02/27 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
js实现文字无缝向上滚动
2017/02/16 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python开发之函数定义实例分析
2015/11/12 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
python实现转圈打印矩阵
2019/03/02 Python
Pyqt5实现英文学习词典
2019/06/24 Python
配置python的编程环境之Anaconda + VSCode的教程
2020/03/29 Python
Python 如何实现访问者模式
2020/07/28 Python
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
英文留学推荐信范文
2014/01/25 职场文书
学校政风行风整改方案
2014/10/25 职场文书
2015年质检工作总结
2015/05/04 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
欠条格式范本
2015/07/03 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
Python中Selenium对Cookie的操作方法
2021/07/09 Python
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB