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 图像识别打造一个小狗分类器
项目介绍 小狗分类器可以做什么? 通过这个分类器,你只需要上传照片,就可以得到小狗的品种,以及更多的信息. 这就是所谓的「机器学习」,让机器自己去“学习”.我们今天要做的这个分类任务,是一个“监督 ...
随机推荐
- Cocoa Pod使用总结
1. 背景 CocoaPod是Swift,Objective-C语言编写的Cocoa项目的依赖管理工具.简单点说就是它管理了很多的Swift和Objective-C的库,然后通过CocoaPod可以比 ...
- spring mvc加了@produces注解后报406
问题背景:调用http的post接口返回一个String类型的字符串时中文出现乱码,定位出问题后在@RequestMapping里加produces注解produces = "applica ...
- mysql concat的使用
想要在一个id前都加个0,如果处理呢? mysql concat的使用 update `a_data` set id=CONCAT('0', id) where data_packet_id in ( ...
- java的Swing编程====实现鼠标双击一下==画图===getMouseClicked的方法
总结: 使用匿名类,但是用实现接口的方式呢??? package com.aa; import java.awt.Color; import java.awt.Graphics; import jav ...
- 漫谈JVM之类加载机制(篇一)
前言 最近在看一本书,发现代码里用到了Thread.currentThread().getContextClassLoader(),为什么类加载器还与线程有关系呢,为什么不直接使用ClassLoade ...
- innodb事务日志详解
首先看InnoDB的缓存和文件的关系图如下: InnoDB事务日志功能介绍 InnoDB使用日志来减少提交事务时的开销.因为日志中已经记录了事务,就无须在每个事务提交时把缓冲池的脏块刷新(flush) ...
- mysql 启动卡主,cpu 100%
[mysql@mysqlhq scripts]$ cat /etc/redhat-release Kylin Linux release 3.3.1707 (Core) mysql version S ...
- (转)css 背景色渐变兼容写法
css3:linear-gradient 比如:黑色渐变到白色,代码如下: .gradient{ background: -moz-linear-gradient(top, #000000 0%, # ...
- CSS简单介绍及应用
CSS的简介 概述: Cascading Style Sheets, 层叠样式表. 作用: 用来美化页面的. 分类: 行内样式: //直接写在元素(html的标签)中的样式. 内部样式: //写在&l ...
- 551. Student Attendance Record I 从字符串判断学生考勤
[抄题]: You are given a string representing an attendance record for a student. The record only contai ...