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 Web框架Flask中使用七牛云存储实例
Feb 08 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
python使用opencv驱动摄像头的方法
Aug 03 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
Python实现变声器功能(萝莉音御姐音)
Dec 05 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
pycharm 实现调试窗口恢复
Feb 05 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 Python
Python实现抖音热搜定时爬取功能
Mar 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支付宝接口用法分析
2015/01/04 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
Jquery中val()表单取值赋值的实例代码
2013/08/15 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
基于jquery实现图片放大功能
2016/05/07 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python 输出所有大小写字母的方法
2019/01/02 Python
Django实现基于类的分页功能
2019/10/31 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
网络技术支持面试题
2013/04/22 面试题
计算机通信工程专业毕业生推荐信
2013/12/24 职场文书
公证委托书
2014/08/01 职场文书
防火标语大全
2014/10/06 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
远程教育学习心得体会
2016/01/23 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
MySQL中的隐藏列的具体查看
2021/09/04 MySQL