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分析git log日志示例
Feb 27 Python
Python实现自动登录百度空间的方法
Jun 10 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
python模仿网页版微信发送消息功能
Feb 24 Python
PyQt5实现下载进度条效果
Apr 19 Python
查找python项目依赖并生成requirements.txt的方法
Jul 10 Python
win10下tensorflow和matplotlib安装教程
Sep 19 Python
python实现的爬取电影下载链接功能示例
Aug 26 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
Python如何发送与接收大型数组
Aug 07 Python
python将字典内容写入json文件的实例代码
Aug 12 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 echo 输出字符串函数详解
2010/05/13 PHP
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
js去空格技巧分别去字符串前后、左右空格
2013/10/21 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
jQuery 移动端artEditor富文本编辑器
2016/01/11 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
nodeJS删除文件方法示例
2016/12/25 NodeJs
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
详解ES7 Decorator 入门解析
2019/02/18 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
[15:07]lgd_OG_m2_BP
2019/09/10 DOTA
python 返回列表中某个值的索引方法
2018/11/07 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
pycharm修改file type方式
2019/11/19 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
全球采购的街头服饰和帽子:Urban Excess
2020/10/28 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
农行实习自我鉴定
2013/09/22 职场文书
怎样客观的做好自我评价
2013/12/28 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android