python -Tkinter 实现一个小计算器功能
文章来源: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 实现一个小计算器功能的更多相关文章
- Python之实现一个简易计算器
自己动手写计算器 一.功能分析 用户输入一个类似这样 3*( 4+ 50 )-(( 100 + 40 )*5/2- 3*2* 2/4+9)*((( 3 + 4)-4)-4) 这样的表达式,假设表达式里 ...
- 简明Python中的一个小错误
最近在学Python,先看的是<Python基础教程>,后来经别人推荐,感觉网络上的<简明Python教程>也挺好的,在里面发现一个小错误. 网址如下:http://sebug ...
- selenium,phantomJS,python整合的一个小示例,把某个网页画面整体保存成图片格式。
本篇将使用selenium,phantomJS和python制作的一个示例,把某个网页整体保存为一个图片文件. 简单介绍下,selenium是一个开源的用于测试web程序的工具,当然,如果你要执行一些 ...
- python Tkinter 写一个弹球的小游戏
#!usr/bin/python #-*- coding:utf-8 -*- from Tkinter import * import Tkinter import random import tim ...
- 利用python+tkinter做一个简单的智能电视遥控器
要通过python实现遥控器功能分两步: 第一步:开发图形化界面,以暴风TV的遥控器按钮为例 第二步:使PC端给电视发送相应指令(此步骤需要打开电视的adb开关) 现在就开始第一步操作实现遥控器功能, ...
- 基于python2.7 Tkinter 做一个小工具
1.源码:先写一个界面出来,放需要放入的点击事件的函数 # -*- coding:utf-8 -*- import Tkinter from Tkinter import * import Excle ...
- 利用python+tkinter开发一个点名软件
最近上课学生多名字记不住,名册忘记了带,要点名怎么办,好久没有写代码了,于是自己写了个点名软件,记录下吧,第一次接触TK也不是太熟悉,写的不太好,记录下源代码 以后遇到要写桌面软件还是可以耍耍的. t ...
- python笔记3----第一个小爬虫
1.先看看要爬的网站有没有爬虫协议,可以看该网站有没有robots.txt,如豆瓣的: 2.requests模块:[requests是第三方,代码比python自带的urllib模块简单] 先加载re ...
- 用 Python 图像识别打造一个小狗分类器
项目介绍 小狗分类器可以做什么? 通过这个分类器,你只需要上传照片,就可以得到小狗的品种,以及更多的信息. 这就是所谓的「机器学习」,让机器自己去“学习”.我们今天要做的这个分类任务,是一个“监督 ...
随机推荐
- 遍历listmap 遍历map
package excel; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import j ...
- ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 复制代码 代码如下: $.ajax({ dataType : ‘json',type : ‘POST',url : ‘ht ...
- 让Delphi XE5跟其他版本的Delphi共存
找到Delphi XE5的安装根目录 .... \Program Files (x86)\Embarcadero\RAD Studio\12.0\bin下的cglm.ini文件, 打开cglm.i ...
- xe 最大连接数限制、记录客户连接、心跳
xe 最大连接数限制.记录客户连接.心跳 //author: cxg unit DSServerContainer; interface uses SysUtils, Classes, IniF ...
- mysql + keepalived架构
mysql + keepalived架构 文档(这个文章共有三篇): http://blog.itpub.net/27000195/viewspace-1364706/
- 全文检索引擎Solr系列——Solr核心概念、配置文件
Document Document是Solr索引(动词,indexing)和搜索的最基本单元,它类似于关系数据库表中的一条记录,可以包含一个或多个字段(Field),每个字段包含一个name和文本值. ...
- Jenkins设置自动发邮件
安装Jenkins方法详解:https://www.cnblogs.com/lizhe860/p/9901257.html 一.设置全局变量 从首页依次进入系统工具→系统设置 二.在项目配置中设置项目 ...
- List和Map常用的几种遍历方式
遍历一个List有以下几种方法: /*//1.普通for循环的方式: List<String> list=new ArrayList<String>(); list.add(& ...
- 吴恩达-AI-机器学习课后习题解析-第三周
================================================= sigmod.m ====================================== ...
- jquery slideDown效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...