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 根据时间来生成唯一的字符串方法
Jan 14 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
Django如何自定义model创建数据库索引的顺序
Jun 20 Python
用python求一个数组的和与平均值的实现方法
Jun 29 Python
如何不用安装python就能在.NET里调用Python库
Jul 12 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
Oct 22 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
python实现扫雷游戏
Mar 03 Python
jupyter notebook 重装教程
Apr 16 Python
Django之全局使用request.user.username的实例详解
May 14 Python
Python自动创建Excel并获取内容
Sep 16 Python
python 用递归实现通用爬虫解析器
Apr 16 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中的cookie
2006/11/26 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
使用html+js+css 实现页面轮播图效果(实例讲解)
2017/09/21 Javascript
jquery获取transform里的值实现方法
2017/12/12 jQuery
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[02:17]2016完美“圣”典风云人物:Sccc专访
2016/12/03 DOTA
简单介绍Python中的RSS处理
2015/04/13 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
自荐信格式范文
2013/10/07 职场文书
质量承诺书格式范文
2015/04/28 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
Python Pandas常用函数方法总结
2021/06/15 Python
python文件与路径操作神器 pathlib
2022/04/01 Python