基于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中使用select模块实现非阻塞的IO
Feb 03 Python
在python的类中动态添加属性与生成对象
Sep 17 Python
python 截取 取出一部分的字符串方法
Mar 01 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
Apr 11 Python
python通过opencv实现批量剪切图片
Nov 13 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
python 实现selenium断言和验证的方法
Feb 13 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
使用python实现名片管理系统
Jun 18 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
Java Unsafe类实现原理及测试代码
Sep 15 Python
python迷宫问题深度优先遍历实例
Jun 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模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
验证手机号码的JS方法分享
2013/09/10 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
jquery实现具有嵌套功能的选项卡
2016/02/12 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
Python 字符串操作方法大全
2014/03/11 Python
Python中datetime常用时间处理方法
2015/06/15 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
python统计文章中单词出现次数实例
2020/02/27 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
大学生求职简历的自我评价
2013/10/14 职场文书
医德医魂心得体会
2014/09/11 职场文书
大学生第一学年自我鉴定2015
2014/09/28 职场文书
学习十八大标语
2014/10/09 职场文书
安全生产警示教育活动总结
2015/05/09 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
python-for x in range的用法(注意要点、细节)
2021/05/10 Python