基于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通过微信发送邮件实现电脑关机
Jun 20 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
python机器学习之KNN分类算法
Aug 29 Python
Python中调用其他程序的方式详解
Aug 06 Python
Python栈的实现方法示例【列表、单链表】
Feb 22 Python
tensorflow2.0的函数签名与图结构(推荐)
Apr 28 Python
如何理解Python中包的引入
May 29 Python
浅析python中的del用法
Sep 02 Python
Python 列表反转显示的四种方法
Nov 16 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 Python
python实现网络五子棋
Apr 11 Python
Python pyecharts绘制条形图详解
Apr 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
给网站上的广告“加速”显示的方法
2007/04/08 Javascript
javascript 读取图片文件的大小
2009/06/25 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
AngularJS中如何使用echart插件示例详解
2016/10/26 Javascript
BootStrap轮播HTML代码(推荐)
2016/12/10 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
详解微信小程序的不同函数调用的几种方法
2019/05/08 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
win与linux系统中python requests 安装
2016/12/04 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python支持多继承吗
2020/06/19 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
一些PHP的面试题
2015/05/06 面试题
临床医学专业学生的自我评价分享
2013/11/21 职场文书
酒店办公室文员岗位职责
2013/12/18 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
六年级作文之家庭作文
2019/12/12 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
go结构体嵌套的切片数组操作
2021/04/28 Golang
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL