Python Tkinter实现简易计算器功能

闲暇时间用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()

下面是运行结果:

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

(0)

相关推荐

  • python3.3使用tkinter开发猜数字游戏示例

    利用这个小游戏可以学习一下ython3.3中tkinter的使用方法 复制代码 代码如下: # -*- coding: utf-8 -*-import tkinter as tkimport sysimport randomimport re number = random.randint(0,1024)running = Truenum = 0nmaxn = 1024nminn = 0 def eBtnClose(event):    root.destroy() def eBtnGuess(

  • Python+tkinter使用80行代码实现一个计算器实例

    本文主要探索的是使用Python+tkinter编程实现一个简单的计算器代码示例,具体如下. 闲话不说,直奔主题.建议大家跟着敲一遍代码,体会一下代码复用.字符串方法的运用和动态创建组件的妙处,然后在这个框架的基础上进行补充和发挥. 选择任何一款Python开发环境,创建一个程序文件,命名为tkinter_Calculator.pyw,然后编写下面的代码: 1)导入标准库re和tkinter,创建并简单设置应用主程序,在窗口顶部放置一个只读的文本框用来显示信息. 2)编写计算器上各种按钮的通用处

  • Python Tkinter模块实现时钟功能应用示例

    本文实例讲述了Python Tkinter模块实现时钟功能.分享给大家供大家参考,具体如下: 本机测试效果: 完整代码: # coding=utf-8 from Tkinter import * import _tkinter import math import time from threading import Thread class Clock: def __init__(self, master, x, y, width, height, radius): ''' :param ma

  • python+tkinter编写电脑桌面放大镜程序实例代码

    本文讲述的是通过python+tkinter编写一个简单桌面放大镜的代码示例,具体如下. 代码思路:首先全屏截图,然后在鼠标当前位置以小窗口进行二次截图,放大后再显示到鼠标左上角. 主要技术:全屏截图,指定区域截图,绑定鼠标事件,绘制图像. 建议大家照着代码敲一遍,然后运行试试.代码有一点点小瑕疵,试着发现并尝试解决. 总结 以上就是本文关于Python+tkinter编写电脑桌面放大镜程序实例代码的全部内容,希望对大家有所帮助.感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指

  • python3使用tkinter实现ui界面简单实例

    复制代码 代码如下: import timeimport tkinter as tk class Window:    def __init__(self, title='nms', width=300, height=120, staFunc=bool, stoFunc=bool):        self.w = width        self.h = height        self.stat = True        self.staFunc = staFunc       

  • Python3用tkinter和PIL实现看图工具

    需求 想做看图工具的,必然要支持jpg.png等常见格式,但tkinter是个纯粹的GUI库,不像GTK.QT那样大而全,所以只支持gif和ppm两种格式,局限很大,必须搭配图像处理库,才能实现基本的看图功能 在python生态系统里,最常用的图像处理库是PIL Python3下库的安装 这两个库在python3下跟python2有一定差异: tkinter首字母变成小写 PIL官方还不支持Python3,但有个fork叫Pillow,可以替代官方并且接口保持不变,需要pip install P

  • python使用Tkinter实现在线音乐播放器

    本文实例使用Tkinter实现在线音乐播放器的具体代码,供大家参考,具体内容如下 1.先使用Tkinter库写界面 2.写点击按钮触发的事件 (1).使用网易音乐的api,返回数据包装成json格式数据,解析数据 (2)涉及到多线程的问题未解决,一个软件默认打开一个线程,当播放歌曲时,显示界面就会卡掉,导致python停止工作 代码: #coding=utf-8 from Tkinter import * import tkMessageBox import urllib import json

  • Python实现模拟时钟代码推荐

    Python实现模拟时钟代码推荐 # coding=utf8 import sys, pygame, math, random from pygame.locals import * from datetime import datetime, date, time def print_text(font, x, y, text, color=(255,255,255)): imgtext = font.render(text, True, color) screen.blit(imgtext,

  • Python使用Tkinter实现机器人走迷宫

    这本是课程的一个作业研究搜索算法,当时研究了一下Tkinter,然后写了个很简单的机器人走迷宫的界面,并且使用了各种搜索算法来进行搜索,如下图: 使用A*寻找最优路径: 由于时间关系,不分析了,我自己贴代码吧.希望对一些也要用Tkinter的人有帮助. from Tkinter import * from random import * import time import numpy as np import util class Directions: NORTH = 'North' SOU

  • Python tkinter实现的图片移动碰撞动画效果【附源码下载】

    本文实例讲述了Python tkinter实现的图片移动碰撞动画效果.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: #!/usr/bin/python # -*- coding: utf-8 -*- import time try: from tkinter import * except ImportError: #Python 2.x PythonVersion = 2 from Tkinter import * from tkFont import Font fro

  • python使用turtle库绘制时钟

    Python函数库众多,而且在不断更新,所以学习这些函数库最有效的方法,就是阅读Python官方文档.同时借助Google和百度. 本文介绍的turtle库对应的官方文档地址 绘制动态钟表的基本思路如下(面向对象的编程): 使用5个turtle对象 1个turtle:绘制外表盘 3个turtle:模拟表针行为 1个turtle:输出表盘上文字 根据实时时间使用ontimer()函数更新表盘画面,显示效果如下: 相关函数的使用在程序中进行了详细的注释,代码如下: # -*- coding: utf

随机推荐