文章来源: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. python使用wxPython创建一个简单的文本编辑器。

    ubuntu下通过'sudo apt-get install python-wxtools'下载wxPython.load和save函数用于加载和保存文件内容,button通过Bind函数绑定这两个函 ...

  2. 随时查找中位数——pat1057

    http://pat.zju.edu.cn/contests/pat-a-practise/1057 题目的意思是可以在一个可以任意添加于删除整数的集合里随时查找该集合的中位数 每次查找用nlogn的 ...

  3. ror配置unicorn部署

    unicorn是目前在ror上比较流行的应用服务器,配合nginx用来直接部署rails程序,下面这种方式应该是共享socket,不断fork子进程,有点类似php-fpm的模式 安装unicorn ...

  4. java一位数组求平均值,小数

    package com.c2; //注意数据类型,float public class Col {// public static void main(String[] args) { float m ...

  5. codeforce 977 F. Consecutive Subsequence

    F. Consecutive Subsequence time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  6. elasticsearch5.6.8中文分词器

    安装分词器,务必确保版本一致! 下载地址:https://github.com/medcl/elasticsearch-analysis-ik 为了保证一致,我特地将elasticsearch进行降级 ...

  7. 微信扫码支付PHP接入总结

    微信扫码支付分为两种模式, 模式一比较复杂,需要公众号配置回调地址. 模式二比较简单,只需要在代码中配置回调地址就可以了. 我这次使用的是模式二. 需要配置参数, const APPID = 'xxx ...

  8. QQ市场总监分享:黏住90后的独门攻略

    转自:http://www.gameres.com/476003.html 90后的关键词 1. 品质生活 90后是怎么样的一群人?他们注重生活的品质. 他们比我们更爱享受,或者说他们不像我们一样认为 ...

  9. (转)编写 DockerFile

    这几天在研究怎样制作docker image. 其中使用dockerfile是一种可记录制作image的过程的并且是容易重复使用的一种方式.在园子里看到了一篇好文,于是分享到这里~~ 原文链接: ht ...

  10. Tulpar-web渗透小工具

    首先git clone一下,项目地址:https://github.com/anilbaranyelken/tulpar 下载完后打开文件 然后安装所需的Python模块 安装完成后先看一下帮助 命令 ...