Python+Tkinter 实现计算器功能
- #===================================================================================
- import tkinter
- import math
- #===================================================================================
- root = tkinter.Tk() #创建一个窗体
- root.minsize(320,440) #大小尺寸
- root.title('NEO-Karl的计算器')
- shownum = tkinter.StringVar()
- shownum.set(0)
- # ===================================================================================
- numstrlist=[]#存储数字 符号
- isjisuan=False#运算标志
- #==================================================================
- #数据触发事件
- #==================================================================
- def pressnum(num):#按下数字
- global isjisuan
- if isjisuan==True:
- shownum.set('')
- isjisuan=False
- oldnum=shownum.get()
- if oldnum=='':#旧数字是否为0
- shownum.set(num)
- else:
- if num =='+/-':
- if oldnum.startswith('-'):
- shownum.set(oldnum[1:])
- else:
- shownum.set('-'+oldnum)
- else:
- shownum.set(oldnum+num)
- #==================================================================
- #该函数主要实现数据加减符号的操作
- #==================================================================
- def presssign(sign):#按下加减符号
- global numsrtlist
- global isjisuan
- oldnum=shownum.get()
- numstrlist.append(oldnum)
- numstrlist.append(sign)
- isjisuan=True
- print(numstrlist)
- #==================================================================
- #该函数主要实现计算器的等的操作符
- #==================================================================
- def equal(sign):
- global numstrlist
- if sign=='=':
- oldnum =shownum.get()
- numstrlist.append(oldnum)
- print(numstrlist)
- resu1 =''.join(numstrlist)
- result =eval(resu1)
- print(result)
- shownum.set(result)
- numstrlist.clear()
- if sign =='1/x':
- oldnum = shownum.get()
- result =1/float(oldnum)
- print(result)
- shownum.set(result)
- if sign =='√':
- oldnum = shownum.get()
- result = math.sqrt(float(oldnum))
- print(result)
- shownum.set(result)
- #==================================================================
- #该函数主要实现的是数据的清空操作
- #==================================================================
- def gui0(): #清空数据
- global numstrlist
- global isjisuan
- numstrlist.clear()
- isjisuan=False
- shownum.set(0)
- # ===================================================================================
- #文本框输入
- # ===================================================================================
- label=tkinter.Label(root,textvariable=shownum,bg='gray',font=('宋体',20),anchor='e',bd=5,fg='gold')
- label.place(x=20,y=10,width=280,height=50)
- # ===================================================================================
- #第一行
- # ===================================================================================
- btn1 =tkinter.Button(text ='MC',bg='#988',bd=2)#Memory Clear 清除存储器中的数值
- btn1.place(x=10,y =70,width =50,height=50)
- btn2 =tkinter.Button(text ='MR',bg='#988',bd=2)#Memory Read 存储器读出
- btn2.place(x=70,y =70,width =50,height=50)
- btn3 =tkinter.Button(text ='MS',bg='#988',bd=2)#Memory Save 存入存储器
- btn3.place(x=130,y =70,width =50,height=50)
- btn4 =tkinter.Button(text ='M+',bg='#988',bd=2)#Memory Plus 将数值与存储器中的数值相加
- btn4.place(x=190,y =70,width =50,height=50)
- btn5 =tkinter.Button(text ='M-',bg='#988',bd=2)
- btn5.place(x=250,y =70,width =50,height=50)
- # ===================================================================================
- #第二行
- # ===================================================================================
- btn2_1 =tkinter.Button(text ='del',bg='#988',bd=3)
- btn2_1.place(x=10,y =130,width =50,height=50)
- btn2_2 =tkinter.Button(text ='CE',bg='#988',bd=3,command=lambda:gui0())#CE是清除全部数字,但不影响以前的计算
- btn2_2.place(x=70,y =130,width =50,height=50)
- btn2_3 =tkinter.Button(text ='C',bg='#988',bd=3,command=lambda:gui0())#C健是重新开始计算,和ESC键是一样的功能
- btn2_3.place(x=130,y =130,width =50,height=50)
- btn2_4 =tkinter.Button(text ='+/-',bg='#988',bd=3,command=lambda:pressnum('+/-'))
- btn2_4.place(x=190,y =130,width =50,height=50)
- btn2_5 =tkinter.Button(text ='√',bg='#988',bd=3,command=lambda:equal('√'))#--------√开平方
- btn2_5.place(x=250,y =130,width =50,height=50)
- # ===================================================================================
- #第三行
- # ===================================================================================
- btn3_1 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn3_1.place(x=10,y =190,width =50,height=50,)
- btn3_2 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn3_2.place(x=70,y =190,width =50,height=50)
- btn3_3 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn3_3.place(x=130,y =190,width =50,height=50)
- btn3_4 =tkinter.Button(text ='/',bg='#708069',command=lambda:presssign('/'))
- btn3_4.place(x=190,y =190,width =50,height=50)
- btn3_5 =tkinter.Button(text ='%',bg='#708069',command=lambda:presssign('%'))
- btn3_5.place(x=250,y =190,width =50,height=50)
- # ===================================================================================
- #第四行
- # ===================================================================================
- btn4_1 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn4_1.place(x=10,y =250,width =50,height=50)
- btn4_2 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn4_2.place(x=70,y =250,width =50,height=50)
- btn4_3 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn4_3.place(x=130,y =250,width =50,height=50)
- btn4_4 =tkinter.Button(text ='*',bg='#708069',command=lambda:presssign('*'))
- btn4_4.place(x=190,y =250,width =50,height=50)
- btn4_5 =tkinter.Button(text ='1/x',bg='#708069',command=lambda:equal('1/x'))#倒数
- btn4_5.place(x=250,y =250,width =50,height=50)
- # ===================================================================================
- #第五行
- # ===================================================================================
- btn5_1 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn5_1.place(x=10,y =310,width =50,height=50)
- btn5_2 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn5_2.place(x=70,y =310,width =50,height=50)
- btn5_3 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn5_3.place(x=130,y =310,width =50,height=50)
- btn5_4 =tkinter.Button(text ='-',bg='#708069',command=lambda:presssign('-'))
- btn5_4.place(x=190,y =310,width =50,height=50)
- btn5_5 =tkinter.Button(text ='=',bg='#708069',command=lambda:equal('='))
- btn5_5.place(x=250,y =310,width =50,height=110)
- # ===================================================================================
- #第六行
- # ===================================================================================
- btn6_1 =tkinter.Button(text ='',bg='#aaaaaa',bd=3,command=lambda:pressnum(''))
- btn6_1.place(x=10,y =370,width =110,height=50)
- btn6_3 =tkinter.Button(text ='.',bg='#708069',command=lambda:pressnum('.'))
- btn6_3.place(x=130,y =370,width =50,height=50)
- btn6_4 =tkinter.Button(text ='+',bg='#708069',command=lambda:presssign('+'))
- btn6_4.place(x=190,y =370,width =50,height=50)
- # ===================================================================================
- root.mainloop()
- # ===================================================================================
Python+Tkinter 实现计算器功能的更多相关文章
- python 实现一个计算器功能
#s = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )' #第 ...
- 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input(" ...
- 利用PYTHON设计计算器功能
通过利用PYTHON 设计处理计算器的功能如: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ))- (-4*3 ...
- python 编程之计算器
作业: 使用正则表达式和递归实现计算器功能. 实现: 1.实现带括号的计算 2.实现指数.加减乘除求余等功能 一.实例说明: 本实例自己写了个版本,但依旧存在一点bug,例:-2-2等计算问题,故最后 ...
- 如何用Python写一个计算器软件 附带效果图
该计算器使用Python tkinter模块开发 效果如下图 import tkinter #导入tkinter模块 root = tkinter.Tk() root.minsize(280,500 ...
- Python Tkinter 学习成果:点歌软件music
笔者工作业余时间也没什么爱好,社交圈子也小,主要娱乐就是背着自己带电瓶的卖唱音响到住地附近找个人多的位置唱唱KtV. 硬件上点歌就用笔记本电脑,歌曲都是网上下载的mkv格式的含有两个音轨的视频.因此点 ...
- javaWeb 使用 jsp 和 javaBean 实现计算器功能
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- C#实现按键计算器功能
C#实现按键计算器功能 (一次失败的编程) 界面: 代码如下: using System; using System.Collections.Generic; using System.Compone ...
- Atitit php java python nodejs错误日志功能的比较
Atitit php java python nodejs错误日志功能的比较 1.1. Php方案 自带 1 1.2. Java解决方案 SLF4J 1 1.3. Python解决方案 自带lo ...
随机推荐
- gantt project 使用
市场上有不少项目计划类系统, 很多都是收费的, 还有很多都是web版, 这些都自然被排除了. 免费好用的还真不多, 今天简单介绍一下 gantt project 这个软件, 开源并且免费, 基于 ja ...
- [C++]UVaLive7324 ASCII Addtion
Description Nowadays, there are smartphone applications that instantly translate text and even solve ...
- GDB程序调试工具
GDB程序调试工具 GDB主要完成下面三个方面的功能: 启动被调试程序 让被调试程序在指定的位置停住 当程序被停住时,可以检查程序状态 GDB快速入门 编译生成可执行文件 gcc -g test.c ...
- kali中的webshell工具--webacoo
webacoo webshell其实就是放置在服务器上的一段代码 kali中生成webshell的工具 WeBaCoo(Web Backdoor Cookie) 特点及使用方法 类终端的shell 编 ...
- 阿里云服务器ftp连接后21端口无法使用的问题
今天在阿里云Centos上搭了一个ftp 服务,开启了20和21端口的权限.但是用工具和ftp命令登录,均超时. ftp命令登录成功后不能使用ls 命令,直接超时. 工具登录成功后 获取根目录失败,也 ...
- STL--sort源码分析
SGI STL sort源码 temlate <class RandowAccessIterator> inline void sort(RandowAccessIterator firs ...
- Oracle GoldenGate微服务架构的服务Shell脚本
Oracle GoldenGate微服务架构的/etc/init.d下的OracleGoldenGate服务Shell脚本: #!/bin/sh # # Oracle GoldenGate Servi ...
- .Net业务搭配实用技术栈(转)
前言 昨天有篇文章在讨论webform的设计思路,我已经四五年不用webform了,虽然它也提供了HttpModule和httphandle来处理请求,提供了一般处理程序ashx来简化处理流程,但 ...
- Allowed memory size of 134217728 bytes exhausted
错误信息: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65015808 bytes) 由于报错信息和数据库 ...
- WPF 10天修炼 第九天 - 几何图形
几何图形 使用LineGeometry.RectangleGeometry.EllipseGeometry对象分别绘制直线.矩形.椭圆. 使用GeometryGroup可以绘制组合图形. <Wi ...