Python Tkinter实现简易计算器功能


Posted in Python onJanuary 30, 2018

闲暇时间用tkinter写了个简易计算器,可实现简单的加减乘除运算,用了Button和Entry2个控件,下面是代码,只是简单的用了偏函数partial,因为那么多button的大部分参数都是一样的,使用偏函数可以简化参数传递,避免同样的参数传递写N次。

# -*- coding: utf-8 -*- 
#author: Cullen 
 
#import the module 
from Tkinter import * 
import tkFont 
import os 
from functools import partial 
from PIL import Image, ImageTk 
 
def get_input(entry, argu): 
  entry.insert(END, argu) 
 
def backspace(entry): 
  input_len = len(entry.get()) 
  entry.delete(input_len - 1) 
 
def clear(entry): 
  entry.delete(0, END) 
 
def calc(entry): 
  input = entry.get() 
  output = str(eval(input.strip())) 
  clear(entry) 
  entry.insert(END, output) 
 
def cal(): 
  root = Tk() 
  root.title("Calc") 
  root.resizable(0,0) 
 
  entry_font = tkFont.Font(size=12) 
  entry = Entry(root, justify="right", font=entry_font) 
  entry.grid(row=0, column=0, columnspan=4, sticky=N+W+S+E, padx=5, pady=5) 
 
  button_font = tkFont.Font(size=10, weight=tkFont.BOLD) 
  button_bg = '#D5E0EE' 
  button_active_bg = '#E5E35B' 
 
  myButton = partial(Button, root, bg=button_bg, padx=10, pady=3, activebackground = button_active_bg) 
 
  button7 = myButton(text='7', command=lambda : get_input(entry, '7')) 
  button7.grid(row=1, column=0, pady=5) 
 
  button8 = myButton(text='8', command=lambda : get_input(entry, '8')) 
  button8.grid(row=1, column=1, pady=5) 
 
  button9 = myButton(text='9', command=lambda : get_input(entry, '9')) 
  button9.grid(row=1, column=2, pady=5) 
 
  button10 = myButton(text='+', command=lambda : get_input(entry, '+')) 
  button10.grid(row=1, column=3, pady=5) 
 
  button4 = myButton(text='4', command=lambda : get_input(entry, '4')) 
  button4.grid(row=2, column=0, pady=5) 
 
  button5 = myButton(text='5', command=lambda : get_input(entry, '5')) 
  button5.grid(row=2, column=1, pady=5) 
 
  button6 = myButton(text='6', command=lambda : get_input(entry, '6')) 
  button6.grid(row=2, column=2, pady=5) 
 
  button11 = myButton(text='-', command=lambda : get_input(entry, '-')) 
  button11.grid(row=2, column=3, pady=5) 
 
  button1 = myButton(text='1', command=lambda : get_input(entry, '1')) 
  button1.grid(row=3, column=0, pady=5) 
 
  button2 = myButton(text='2', command=lambda : get_input(entry, '2')) 
  button2.grid(row=3, column=1, pady=5) 
 
  button3 = myButton(text='3', command=lambda : get_input(entry, '3')) 
  button3.grid(row=3, column=2, pady=5) 
 
  button12 = myButton(text='*', command=lambda : get_input(entry, '*')) 
  button12.grid(row=3, column=3, pady=5) 
 
  button0 = myButton(text='0', command=lambda : get_input(entry, '0')) 
  button0.grid(row=4, column=0, columnspan=2, padx=3, pady=5, sticky=N+S+E+W) 
 
  button13 = myButton(text='.', command=lambda : get_input(entry, '.')) 
  button13.grid(row=4, column=2, pady=5) 
 
  button14 = Button(root, text='/', bg=button_bg, padx=10, pady=3, 
           command=lambda : get_input(entry, '/')) 
  button14.grid(row=4, column=3, pady=5) 
 
  button15 = Button(root, text='<-', bg=button_bg, padx=10, pady=3, 
           command=lambda : backspace(entry), activebackground = button_active_bg) 
  button15.grid(row=5, column=0, pady=5) 
 
  button16 = Button(root, text='C', bg=button_bg, padx=10, pady=3, 
           command=lambda : clear(entry), activebackground = button_active_bg) 
  button16.grid(row=5, column=1, pady=5) 
 
  button17 = Button(root, text='=', bg=button_bg, padx=10, pady=3, 
           command=lambda : calc(entry), activebackground = button_active_bg) 
  button17.grid(row=5, column=2, columnspan=2, padx=3, pady=5, sticky=N+S+E+W) 
 
  root.mainloop() 
 
if __name__ == '__main__': 
  cal()

下面是运行结果:

Python Tkinter实现简易计算器功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现在目录中查找指定文件的方法
Nov 11 Python
使用django-suit为django 1.7 admin后台添加模板
Nov 18 Python
Python实现对比不同字体中的同一字符的显示效果
Apr 23 Python
解析Python编程中的包结构
Oct 25 Python
Python的re模块正则表达式操作
May 25 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
Python HTMLTestRunner可视化报告实现过程解析
Apr 10 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
浅谈python处理json和redis hash的坑
Jul 16 Python
python实现邮件循环自动发件功能
Sep 11 Python
Python探索生命起源 matplotlib细胞自动机动画演示
Apr 21 Python
python使用tkinter实现简单计算器
Jan 30 #Python
Python实现简单遗传算法(SGA)
Jan 29 #Python
Python之reload流程实例代码解析
Jan 29 #Python
Python中的默认参数实例分析
Jan 29 #Python
Python使用遗传算法解决最大流问题
Jan 29 #Python
Python subprocess模块详细解读
Jan 29 #Python
python微信跳一跳游戏辅助代码解析
Jan 29 #Python
You might like
php+mysql实现简单的增删改查功能
2015/07/13 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
2011/12/07 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
JS获取复选框的值,并传递到后台的实现方法
2016/05/30 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
vue 导出文件,携带请求头token操作
2020/09/10 Javascript
python中随机函数random用法实例
2015/04/30 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
2020/05/25 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
大学生通用个人的自我评价
2014/02/10 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
离婚协议书怎样才有法律效力
2014/10/10 职场文书
院系推荐意见
2015/06/05 职场文书
redis 查看所有的key方式
2021/05/07 Redis
React四级菜单的实现
2022/04/08 Javascript