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模块学习 filecmp 文件比较
Aug 27 Python
Python的Tornado框架异步编程入门实例
Apr 24 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
Jun 14 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
Nov 07 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
Django视图扩展类知识点详解
Oct 25 Python
Python IDLE或shell中切换路径的操作
Mar 09 Python
django orm模块中的 is_delete用法
May 20 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
Jul 05 Python
Python如何实现自带HTTP文件传输服务
Jul 08 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变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
JavaScript中的分号插入机制详细介绍
2015/02/11 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
Less 安装及基本用法
2018/05/05 Javascript
vue-cli安装使用流程步骤详解
2018/11/08 Javascript
vue中轮训器的使用
2019/01/27 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
python中遍历文件的3个方法
2014/09/02 Python
在Python中使用HTMLParser解析HTML的教程
2015/04/29 Python
Django内容增加富文本功能的实例
2017/10/17 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
使用jquery实现HTML5响应式导航菜单教程
2014/04/02 HTML / CSS
html5响应式开发自动计算fontSize的方法
2020/01/13 HTML / CSS
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
英语商务邀请函范文
2014/01/16 职场文书
国家助学金获奖感言
2014/01/31 职场文书
供应链金融服务方案
2014/05/25 职场文书
法制宣传口号
2014/06/16 职场文书
教师师德师风自我剖析材料
2014/09/29 职场文书
云台山导游词
2015/02/03 职场文书
电影雨中的树观后感
2015/06/15 职场文书
2015秋季开学典礼演讲稿
2015/07/16 职场文书