基于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 09 Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 Python
python爬虫爬取网页表格数据
Mar 07 Python
老生常谈python中的重载
Nov 11 Python
Django Serializer HiddenField隐藏字段实例
Mar 31 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
Apr 25 Python
Python使用pdb调试代码的技巧
May 03 Python
Python如何避免文件同名产生覆盖
Jun 09 Python
pytorch简介
Nov 11 Python
python自动化办公操作PPT的实现
Feb 05 Python
jupyter 添加不同内核的操作
Feb 06 Python
常用的Python代码调试工具总结
Jun 23 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下正则来匹配dede模板标签的代码
2010/08/21 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
Grid得到选择行数据的方法总结
2011/01/17 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
jQuery.form.js插件不能解决连接超时(timeout)的原因分析及解决方法
2016/10/14 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
利用jsonp与代理服务器方案解决跨域问题
2017/09/14 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
node.js利用socket.io实现多人在线匹配联机五子棋
2018/05/31 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
200行HTML+JavaScript实现年会抽奖程序
2019/01/22 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
[03:30]完美盛典趣味短片 CSGO2019年度名场面
2019/12/07 DOTA
Python实现KNN邻近算法
2021/01/28 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
wxPython实现分隔窗口
2019/11/19 Python
python实现布隆过滤器及原理解析
2019/12/08 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
深入了解Python 变量作用域
2020/07/24 Python
python 19个值得学习的编程技巧
2020/08/15 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
2014年迎新年活动方案
2014/02/19 职场文书
领导调研接待方案
2014/02/27 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
企业文明单位申报材料
2014/05/16 职场文书
社区维稳工作方案
2014/06/06 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
欢迎词怎么写
2015/01/23 职场文书