python -Tkinter 实现一个小计算器功能

文章来源:http://www.cnblogs.com/Skyyj/p/6618739.html

本代码是基于python 2.7的

如果是对于python3.X  则需要将 tkinter 改为Tkinter    将tkMessagebox 改为messagebox即可

#-*- coding:utf-8 -*-
from tkinter import *
import tkMessageBox

def get_Tk():
    top = Tk()
    return top

#定义求总和函数
def sum_test(baseNum,growthRate,time):
    return baseNum * (1+growthRate)**(time)

#定义增长函数
def add_sum (baseNum,growthRate,time):
    return baseNum * (1+growthRate)**(time) - baseNum

#定义第N天增长数函数
def add_num (baseNum,growthRate,time):
    return baseNum *growthRate* (1+growthRate)**(time-1)

def show_result(top,re_sum,re_add,add_Num,times):
    #这里使用Toplevel(top) 是为了新开一个窗口 ,且显示计算结果,如果直接实例化一个窗口,则新窗口不显示结算结果。
    top_show = Toplevel(top)
    top_show.title("计算结果显示")
    top_show.geometry(‘300x240+810+420‘)

    addNum = Label(top_show, text=‘第%d天增长数:‘ % times)
    addNum.pack()
    num_text = StringVar()
    add_Nums = Entry(top_show, textvariable=num_text,state=‘readonly‘)
    num_text.set(add_Num)
    add_Nums.pack()

    # 显示增长数
    add_Sums = Label(top_show, text=‘%d天增长总数:‘ % times)
    add_Sums.pack()
    add_text = StringVar()
    adds = Entry(top_show, textvariable=add_text,state=‘readonly‘)
    add_text.set(re_add)
    adds.pack()
    # 显示总数
    Sums = Label(top_show, text=‘%d天后总数:‘ % times)
    Sums.pack()
    sum_text = StringVar()
    sums = Entry(top_show, textvariable=sum_text,state=‘readonly‘)
    sum_text.set(re_sum)
    sums.pack()

    top_show.mainloop()

def on_click(top,base_text,growth_text,time_text):

    #获取输入信息
    if base_text.get().strip() == ‘‘:
        tkMessageBox.showinfo(title=‘基数‘, message=‘基数为空,请输入有效的数值!‘)
    else:
        base_Num = float(base_text.get())

    if growth_text.get().strip() == ‘‘:
        tkMessageBox.showinfo(title=‘增长率‘, message=‘增长率为空,请输入有效的数值!‘)
    else:
        growth_Rate = float(growth_text.get())

    if time_text.get().strip() == ‘‘:
        tkMessageBox.showinfo(title=‘时间‘, message=‘时间为空,请输入有效的数值!‘)
    elif float(time_text.get()) < 1:
        tkMessageBox.showinfo(title=‘时间‘, message=‘时间小于1,请输入大于或等于1的数值!‘)
    else:
        temp_time = float(time_text.get())
        times = int(temp_time)

    re_sum = sum_test(base_Num, growth_Rate, times)
    # 四舍五入保留小数点后两位
    re_sum = round(re_sum, 2)
    # print type(re_sum)
    re_add = add_sum(base_Num, growth_Rate, times)
    # 四舍五入保留小数点后两位
    re_add = round(re_add, 2)

    add_Num = add_num(base_Num, growth_Rate, times)
    add_Num = round(add_Num, 2)

    show_result(top,re_sum,re_add,add_Num,times)

def put_info():
    top = get_Tk()
    #top.minsize(100, 100)  # 窗口的最小缩放
    top.title("计算总数量")
    top.geometry(‘300x240+420+420‘)

    baseNum = Label(top, text=‘基数:‘)
    baseNum.pack()
    base_text = StringVar()
    base = Entry(top, textvariable=base_text)
    base_text.set(" ")
    base.pack()

    growthRate = Label(top, text=‘增长率:‘)
    growthRate.pack()
    growth_text = StringVar()
    growth = Entry(top, textvariable=growth_text)
    growth_text.set(‘0.0115‘)
    growth.pack()

    useTime = Label(top, text=‘时间(天):‘)
    useTime.pack()
    time_text = StringVar()
    times = Entry(top, textvariable=time_text)
    time_text.set(" ")
    times.pack()

    Button(top, text="计算", command= lambda:on_click(top,base_text,growth_text,time_text)).pack()
    top.mainloop()

   # 这种 直接command = 方法名的方式,函数是不能传递参数的,所以为了能传递参数使用了上面的方法。
   # Button(top, text="计算", command= on_click).pack()

if __name__ == ‘__main__‘:
    put_info()

文章来源:http://www.cnblogs.com/Skyyj/p/6618739.html

时间: 2024-08-25 03:27:25

python -Tkinter 实现一个小计算器功能的相关文章

利用python+tkinter做一个简单的智能电视遥控器

要通过python实现遥控器功能分两步: 第一步:开发图形化界面 第二步:使PC端给电视发送相应指令 现在就开始第一步操作实现遥控器功能,python2输入以下代码 注意:python3需要将代码中的from Tkinter import * 替换为from tkinter import * 将from SimpleDialog import * 替换为import tkinter.simpledialog #coding=utf-8from Tkinter import * from Simp

利用python+tkinter开发一个点名软件

最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. tk:文档  https://wiki.python.org/moin/TkInter tk是python 自带的一个GUI模块 效果: 背景图: icon图标: 源码: from win32com.client import Dispatch from tkinter import * import

用 Python 图像识别打造一个小狗分类器

? 项目介绍 小狗分类器可以做什么? 通过这个分类器,你只需要上传照片,就可以得到小狗的品种,以及更多的信息. 这就是所谓的「机器学习」,让机器自己去“学习”.我们今天要做的这个分类任务,是一个“监督学习”的过程. 监督学习的主要目标是从有标签的训练数据中学习模型,以便对未知或未来的数据做出预测. 我给大家讲一个例子.用“房子的尺寸”预测“房子的价格” ? 图片来自(吴恩达-机器学习) X-房子的尺寸(小狗的图片)    Y-房子的价格(小狗的类别) 如图,我们根据已经有的数据集(图上的坐标),

python+tkinter制作一个可自定义的动态时钟及详细解释,珍藏版

1.效果图 2.完整代码 #第1步:导出模块 from tkinter import * import math,time #第2步:定义窗口的相关设置 root = Tk() root.title("a DIY clock") #定义窗口名称 root.geometry("1020x800+500+0") #位置坐标=500,0=就是顶格向右水平移动500 root.configure(bg='pink') #定义窗口的背景颜色 #第3步:定义全局变量 globa

【python】由一个小例子看出python的灵活性,IF ELSE一例

temp = input("请输入1到100之间的数字:") num = int(temp) if 1 <= num <= 100:                         # 这一点给赞 省得用 and 或 &了 print('你妹好漂亮^_^')                    # tab键,还有":" else: print('你大爷好丑T_T')                     # tab键   还有":&

用iOS 做一个简易计算器 (功能完备)

源码(.m文件) #import "ZKJAppDelegate.h" @interface ZKJAppDelegate () @property (retain,nonatomic) UIView *containView; @property (retain, nonatomic) UIButton *button; @property (retain, nonatomic) UILabel *label; @property (retain, nonatomic) NSMuta

一个小软件练习了一下python

朋友用python写了一个小软件,刚好没有怎么认真用python编过程序,于是就改进一下 主要练习了一些知识: 1.python Tkinter 页面布局,这次软件用了用了grid 2.Event 事件绑定 3. 字符串的处理. 4.tkFileDialog 的使用 5.一点点面向对象的编程. 6.python编码的结构以及练习Code好习惯 后期改进: 1. 加滚动条 2. 加算法变换文件 3. 可以修改保存路径 4.强化错误处理 5.添加函数,根据类型,用office直接双击打开转换成功的文

Python练习,网络小爬虫(初级)

最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入    www.baidu.com    这个地址.打开网页的过程其实就是浏览器作为一个浏览的“客户端”,向服务器端发送了 一次请求,把服务器端的文件“抓”到本地,再进行解释.展现.HTML是一种标记语言,用标签标记内容并加以解析和区分.浏览器的功能是将获取到的HTML代码进行解析,然后将原始的代码转变成我们直接

一个小程序能够反映的能力

程序员小郑刚步入岗位,但是在公司编码过程中没有受到专业的编码规范的培训,编写出来的程序虽然能够完成指定的功能但是比较不统一,偶尔会别出心裁的设计出自己的简化方法.老王这是从事了软件编码十多年了,现在都快到不惑的年龄了,在软件行业摸爬滚打十多年从事过多个行业,接触过不同公司的编码的规范,在软件代码编写中有独到的认识. 有一天有一个小功能的改动,由于这是一个非常重要的基础系统的功能变动,所以即便是一个小的功能变动公司上上下下都投入了非常高的重视程度.这天老王找到小郑告诉了需要修改这个系统并详细的描述