python编写计算器,供大家参考,具体内容如下

(1)计算器界面如下:

(2)基本满足了计算器的所有需求,使用时不可键盘输入,只能鼠标点击左键才可执行。初始时显示0.0,每次输入的内容存于D:\num.txt(启动程序时自动创建)

(3)" AC " 记录清零返回初始 0.0;" delete " 删除上一个输入内容;" +/- " 将正数为负数,负数为正数

(4)对于不同的进制数值系统,小数的精准值不同。

因此计算机会出现 0.1+0.2=0.3000000000004 的现象

能对数据进行截断处理,可以解决问题,但精度丧失。

(此计算机没有进行截断处理)

import tkinter,os

from tkinter import *

def temp(string):#空白间隔

temp=tkinter.Frame(string,width=20,height=50)

temp.pack()

flag=0

node=0

def num_work(): #更新显示框Lable

global flag

global node

with open("D:\\num.txt") as f:

for length in f:

string=length

top_work.configure(text=string.strip('\n')) # 重新设置标签文本

root.after(500,num_work) # 每隔0.5s调用函数num_work自身获取结果

def num_math_int(num1,num2):#整数运算

try:

if num2[0]=='+':

string=int(num1)+int(num2[1:])

elif num2[0]=='-':

string=int(num1)-int(num2[1:])

elif num2[0]=='x':

string=int(num1)*int(num2[1:])

elif num2[0]=='/':

string=int(num1)/int(num2[1:])

with open("D:\\num.txt",'a') as f:

f.write('\n'+str(string)+'\n')

except:

with open("D:\\num.txt",'a') as f:

f.write('\n错误')

def num_math_float(num1,num2):#小数运算

try:

if num2[0]=='+':

string=float(num1)+float(num2[1:])

elif num2[0]=='-':

string=float(num1)-float(num2[1:])

elif num2[0]=='x':

string=float(num1)*float(num2[1:])

elif num2[0]=='/':

string=float(num1)/float(num2[1:])

if flag==0:

with open("D:\\num.txt",'a') as f:

f.write('\n'+str(string)+'\n')

else:

with open("D:\\num.txt",'a') as f:

f.write('\n'+str(string))

except:

with open("D:\\num.txt",'a') as f:

f.write('\n错误')

def decimal(num):

if num.count('%')>0:

num=num.replace('%','')

num=num.replace('\n','')

if num.isnumeric():

num=str(float(num)/100)

else:

num=num[0]+str(float(num[1:])/100)

return num

def work(string):#按键对应的功能

if string.isnumeric():

with open("D:\\num.txt","a") as file:

file.write(string)

else:

#读取文件D:\\num.txt所有内容

lists=[]

with open("D:\\num.txt","r") as file:

for length in file:

lists.append(length)

if string=='AC':

with open("D:\\num.txt","w") as file:

file.write('0.0\n')

elif string=='=':

num1=lists[-2]

num2=lists[-1]

if num1=='\n':#解决末尾为换行的情况

num1=lists[-3]

#将百分数小数化

#出现结果多0.0000000001

num1=decimal(num1)

num2=decimal(num2)

try: #判断两个数是整数还是小数

number=int(num1)

number=int(num2[1:])

num_math_int(num1,num2)#两个数进行整数运算

except:

num_math_float(num1,num2)#两个数进行小数运算

elif string=='.':

if lists[-1].count('.')==0:#判断结尾是否有小数点,没有写入否则报错

with open("D:\\num.txt","a") as file:

file.write(string)

else:

with open("D:\\num.txt","a") as file:

file.write('\n错误')

elif string=='+/-':

if lists[-1].count('-')==0:#-+为-

if lists[-1].count('+')==1:

lists[-1]=lists[-1].replace('+','')

lists[-1]='-'+lists[-1]

else: #--为+

lists[-1]=lists[-1].replace('-','+')

#更新文件

with open("D:\\num.txt","w") as file:

pass

for length in lists:

with open("D:\\num.txt","a") as file:

file.write(length)

elif string=='delete':

number=lists[-1]

lists[-1]=number[0:(len(number)-1)]#删除一位

#更新文件

with open("D:\\num.txt","w") as file:

pass

for length in lists:

with open("D:\\num.txt","a") as file:

file.write(length)

elif string=='%':

if lists[-1].endswith("%")==False:

with open("D:\\num.txt","a") as file:

file.write(string)

else:

with open("D:\\num.txt","a") as file:

file.write('\n错误')

else:

with open("D:\\num.txt","a") as file:

file.write('\n'+string)

def run():#计算器显示界面主体

if os.path.exists("D:\\num.txt")==False:

with open("D:\\num.txt",'w') as f:

f.write('0.0\n')

global root#定义全局变量root,方便Label更新

root=tkinter.Tk()

root.title("计算器")

#x = root.winfo_screenwidth()

#获取当前屏幕的宽

#y = root.winfo_screenheight()

#获取当前屏幕的高

#print(((x-500)//2),((y-600)//2))#为居中提供的参数

root.geometry('400x500+760+290')#主体长400,高500,居中

top=tkinter.Frame(root,width=20,height=50)

top.pack()

global top_work#定义全局变量root

temp(top)#空白间隔

#计算器显示框

top_work=tkinter.Label(top,text='',justify='left',relief=SUNKEN,bd=10,bg='white',width=40)

top_work.pack(side='bottom')#计算器显示框(位置居下)

num_work()

temp(root)#空白间隔

number=tkinter.Frame(root)#成放计算机键盘的容器

number.pack()

#所有按键,AC键为事例

numberAC=tkinter.Button(number,text="AC",width=10,command=lambda : work('AC')).grid(row=0,column=0)

#左键点击,执行函数work

#按键位置(0,0)

numberdelete=tkinter.Button(number,text="delete",width=10,command=lambda : work('delete')).grid(row=0,column=1)

numberzhengfu=tkinter.Button(number,text="+/-",width=10,command=lambda : work('+/-')).grid(row=0,column=2)

numberchu=tkinter.Button(number,text="/",width=10,command=lambda : work('/')).grid(row=0,column=3)

tkinter.Button(number,text="7",width=10,command=lambda : work('7')).grid(row=1,column=0)

tkinter.Button(number,text="8",width=10,command=lambda : work('8')).grid(row=1,column=1)

tkinter.Button(number,text="9",width=10,command=lambda : work('9')).grid(row=1,column=2)

tkinter.Button(number,text="x",width=10,command=lambda : work('x')).grid(row=1,column=3)

tkinter.Button(number,text="4",width=10,command=lambda : work('4')).grid(row=2,column=0)

tkinter.Button(number,text="5",width=10,command=lambda : work('5')).grid(row=2,column=1)

tkinter.Button(number,text="6",width=10,command=lambda : work('6')).grid(row=2,column=2)

tkinter.Button(number,text="-",width=10,command=lambda : work('-')).grid(row=2,column=3)

tkinter.Button(number,text="1",width=10,command=lambda : work('1')).grid(row=3,column=0)

tkinter.Button(number,text="2",width=10,command=lambda : work('2')).grid(row=3,column=1)

tkinter.Button(number,text="3",width=10,command=lambda : work('3')).grid(row=3,column=2)

tkinter.Button(number,text="+",width=10,command=lambda : work('+')).grid(row=3,column=3)

tkinter.Button(number,text="%",width=10,command=lambda : work('%')).grid(row=4,column=0)

tkinter.Button(number,text="0",width=10,command=lambda : work('0')).grid(row=4,column=1)

tkinter.Button(number,text=".",width=10,command=lambda : work('.')).grid(row=4,column=2)

tkinter.Button(number,text="=",width=10,command=lambda : work('=')).grid(row=4,column=3)

root.mainloop()

if __name__=='__main__':

run()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

pythongui做计算器_python GUI模拟实现计算器相关推荐

  1. pythongui做计算器_Python——GUI编程 利息计算器 作业9(python programming)

    importsysfrom PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * classcal ...

  2. pythongui做计算器_python GUI之简易计算器

    利用内置的tkinter/Tkinter库可实现基本的GUI程序. 示例图 源代码 #coding=utf8 """ @author:kinegratii "& ...

  3. python计算器gui设计_python GUI模拟实现计算器

    python编写计算器,供大家参考,具体内容如下 (1)计算器界面如下: (2)基本满足了计算器的所有需求,使用时不可键盘输入,只能鼠标点击左键才可执行.初始时显示0.0,每次输入的内容存于D:\nu ...

  4. python可视化计算器_GUI最新:python GUI模拟实现计算器_爱安网 LoveAn.com

    关于"GUI"的最新内容 聚合阅读 这篇文章主要介绍了php7 图形用户界面GUI 开发,结合实例形式分析了PHP7基于php_ui扩展实现的图形用户界面GUI相关操作技巧,需要的 ...

  5. matlab gui教程 计算器,matlab gui编写的计算器程序

    首先应设计好计算器的GUI界面 如下图所示,然后分别设置'数据1'.'数据2'.'计算结果'的tag值为num1.num2和shuchu 当然你要是愿意也可以定义加减乘除按钮的tag属性,tag属性值 ...

  6. python编程计算器_Python设计实现的计算器功能完整实例

    本文实例讲述了Python设计实现的计算器功能.分享给大家供大家参考,具体如下: 通过利用PYTHON 设计处理计算器的功能如: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/ ...

  7. python课程设计计算器_Python设计实现的计算器功能完整实例

    本文实例讲述了Python设计实现的计算器功能.分享给大家供大家参考,具体如下: 通过利用PYTHON 设计处理计算器的功能如: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/ ...

  8. pythongui做计算器_python 实现简单的计算器(gui界面)

    运行效果: 完整代码 from tkinter import * def click(num): global op op=op+str(num) iptext.set(op) def evaluat ...

  9. 存款利息python题_Python——GUI编程 利息计算器 作业9(python programming)

    importsysfrom PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * classcal ...

  10. pythontkinter做计算器_Python Tkinter实现简易计算器功能

    闲暇时间用tkinter写了个简易计算器,可实现简单的加减乘除运算,用了Button和Entry2个控件,下面是代码,只是简单的用了偏函数partial,因为那么多button的大部分参数都是一样的, ...

最新文章

  1. 《深度学习:Java语言实现》一一2.6小结
  2. SUDO的环境变量为何不同?
  3. yii2 Html::a
  4. java内存溢出的定位和分析
  5. 数据的设计命名的十个要点
  6. Selenium with Python 001 - 安装篇
  7. CentOS thrift python demo
  8. ionic 支持float吗_机器人协会 | 一起拼机器人吗?
  9. 从RGB扫描图到数字化等高线矢量图
  10. 微型计算机的分类有,微型计算机的种类很多,主要分为台式机,笔记本,还有什么...
  11. 数据库工作笔记012---mysql触发器trigger 实例详解_保证数据库完整性还是不错的
  12. Oracle表空间设计理念
  13. STM32F429DISCO+AT070TN92 7寸LCD
  14. Zynga任命Noel Watson为董事会成员
  15. 如何把Windows主机中的文件拉到centOS虚拟机中
  16. Nginx+Tomcat 负载均衡+动静分离
  17. Intel MIC (至强融核) 安装步骤
  18. java解压在线tgz文件
  19. (python)BMI计算
  20. 贝叶斯神经网络BNN

热门文章

  1. SpringBoot自动装配原理解析
  2. maven配置私服信息
  3. mysql 5.7.14 在 windows 下的配置
  4. 学生机房虚拟化之磁盘操作
  5. logstash之codec插件
  6. $provide.decorator
  7. MongoDB整理笔记のGUI操作
  8. DM9000驱动之接受
  9. initramfs文件解压方法
  10. Ubuntu 在线升级linux 内核的方法