基于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 26 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
Python正则表达式完全指南
May 25 Python
python实现随机森林random forest的原理及方法
Dec 21 Python
Python中按值来获取指定的键
Mar 04 Python
python conda操作方法
Sep 11 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
Jupyter Notebook远程登录及密码设置操作
Apr 10 Python
使用Django搭建网站实现商品分页功能
May 22 Python
Python机器学习三大件之一numpy
May 10 Python
Python答题卡识别并给出分数的实现代码
Jun 22 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 json_encode奇怪问题说明
2011/09/27 PHP
析构函数与php的垃圾回收机制详解
2013/10/28 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
php实现微信发红包
2015/12/05 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
jQuery1.6 使用方法一
2011/11/23 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
基于vue实现多引擎搜索及关键字提示
2017/03/16 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
vue小图标favicon不显示的解决方案
2017/09/19 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
python实现多线程网页下载器
2018/04/15 Python
python实现Windows电脑定时关机
2018/06/20 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python 将有序数组转换为二叉树的方法
2019/03/26 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
python 爬虫如何实现百度翻译
2020/11/16 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
维珍澳洲航空官网:Virgin Australia
2017/09/08 全球购物
电子专业求职信
2014/06/19 职场文书
给医院的感谢信
2015/01/21 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers