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

本代码是基于python 2.7的

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

导入代码改为

from tkinter import *
from tkinter import 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

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

  1. Python之实现一个简易计算器

    自己动手写计算器 一.功能分析 用户输入一个类似这样 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 这样的表达式,假设表达式里 ...

  2. 简明Python中的一个小错误

    最近在学Python,先看的是<Python基础教程>,后来经别人推荐,感觉网络上的<简明Python教程>也挺好的,在里面发现一个小错误. 网址如下:http://sebug ...

  3. selenium,phantomJS,python整合的一个小示例,把某个网页画面整体保存成图片格式。

    本篇将使用selenium,phantomJS和python制作的一个示例,把某个网页整体保存为一个图片文件. 简单介绍下,selenium是一个开源的用于测试web程序的工具,当然,如果你要执行一些 ...

  4. python Tkinter 写一个弹球的小游戏

    #!usr/bin/python #-*- coding:utf-8 -*- from Tkinter import * import Tkinter import random import tim ...

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

    要通过python实现遥控器功能分两步: 第一步:开发图形化界面,以暴风TV的遥控器按钮为例 第二步:使PC端给电视发送相应指令(此步骤需要打开电视的adb开关) 现在就开始第一步操作实现遥控器功能, ...

  6. 基于python2.7 Tkinter 做一个小工具

    1.源码:先写一个界面出来,放需要放入的点击事件的函数 # -*- coding:utf-8 -*- import Tkinter from Tkinter import * import Excle ...

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

    最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. t ...

  8. python笔记3----第一个小爬虫

    1.先看看要爬的网站有没有爬虫协议,可以看该网站有没有robots.txt,如豆瓣的: 2.requests模块:[requests是第三方,代码比python自带的urllib模块简单] 先加载re ...

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

    ​ 项目介绍 小狗分类器可以做什么? 通过这个分类器,你只需要上传照片,就可以得到小狗的品种,以及更多的信息. 这就是所谓的「机器学习」,让机器自己去“学习”.我们今天要做的这个分类任务,是一个“监督 ...

随机推荐

  1. C++的三大特性?C也可以做到

    C++的三大特性是什么?封装.继承与多态,那么今天这篇文章小编就来介绍一下,如何用C语言实现C++的这三个特性. 1.封装 何为封装? 在面向对象的思想中,将数据和对数据的操作封装在一起——即类. 类 ...

  2. 把OnDraw和OnPaint弄清楚(转贴)

    OnDraw()和OnPaint()兄弟 经常有朋友问雷神这样的问题:我在视图画的图象或者文字,当窗口改变后为什么不见了?OnDraw()和OnPaint()两个都是解决上面的问题,有什么不同? 雷神 ...

  3. java代码=--数组复制

    总结:arraycopy注意数组定义的长度.不足会补0 package clientFrame; //数组的复制arraycopy() public class Xiang { public stat ...

  4. 工具软件集合 Adobe AE PS Pr CC 2018 2019 破解教程

    来源https://mp.weixin.qq.com/s/zeq1sTmaPsKt7Bsok0Ldrg(若链接失效,请关注软件安装管家公众号) 相关链接 Office 2019破解教程 Adobe 2 ...

  5. Vue.js:监听属性

    ylbtech-Vue.js:监听属性 1.返回顶部 1. Vue.js 监听属性 本章节,我们将为大家介绍 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化: 实例 & ...

  6. PHP $_SERVER变量

    <?php #测试网址: http://localhost/t/test.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br ...

  7. 配置key认证登陆Ubuntu (下)

    梗概: 使用证书登陆,可以减少密码的使用,避免密码泄露,证书登陆更加方便.安全. Secure CRT 和Putty 原理相同,生成 密钥对(Key pair)操作有所不同. 1.生成key pair ...

  8. JavaScript语言基础-基本数据类型与对象类型

  9. 前端自动化之webstrom

    前端自动化之webstrom 在刚接触前端的时候,使用的就一直是webstrom,版本是webstrom 8. 前端自动画使用的时候,因为webstrom 8版本是没有集成gulp的.所以每次使用都默 ...

  10. 上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中

    上传图片用图片文件的对象hash哈希值判断图片是否一样,避免重复提交相同的图片到服务器中 前端:要用到一个插件,点击下载 <!DOCTYPE html> <html xmlns=&q ...