python 制作简易计算器~用户界面设计

用python制作简易计算器

博主新建的Python学习QQ群分享一些实用的学习工具和疑问解答以及源码分享欢迎加入:431615454
在这里插入图片描述

def shu1():#按键函数1,将会绑在相应的“1”、“2”...“0”键上
  e1.insert(INSERT,'1')#向框1中输入内容——下边8个函数同理
def shu2():
  e1.insert(INSERT,'2')
def shu3():
  e1.insert(INSERT,'3')
def shu4():
  e1.insert(INSERT,'4')
def shu5():
  e1.insert(INSERT,'5')
def shu6():
  e1.insert(INSERT,'6')
def shu7():
  e1.insert(INSERT,'7')
def shu8():
  e1.insert(INSERT,'8')
def shu9():
  e1.insert(INSERT,'9')
def shu0():
  e1.insert(INSERT,'0')
def shudian():#小数点函数,用于输入小数点
  e1.insert(INSERT,'.')
def shujia():#加号函数,将会绑在“+”键上
  e1.insert(INSERT,'+')#向框1输入+号
def shujian():#减号函数,将会绑在“-”键上
  e1.insert(INSERT,'-')#向框1输入-号
def shucheng():#乘号函数,将会绑在“x”键上
  e1.insert(INSERT,'x')#向框1输入x号
def shuchu():#除号函数,将会绑在“/”键上
  e1.insert(INSERT,'/')#向框1输入/号
def shuyv():#求余函数,将会绑在“求余”键上
  e1.insert(INSERT,'%')#向框1输入
def baifen():#百分号函数(只对框2内的结果加百分号运算),这个函数将绑在“%”键上使用
  e2.config(state='normal')#设置框2为可编辑
  s=e2.get()#获取框2的内容
  if s!='':#如果框2内容不为空
    if s.count('%')!=0:#如果框2内有%,此功能就是快速除100
      s=s[:len(s)-1]#跳过%号,获取%号之前的值
    s=eval(s)#将s改为有效数值
    qing2()#清空框2
    s/=100#进行除100运算
    s=str(s)+'%'#将s变为字符串格式并加上%号
    e2.insert(INSERT,s)#将s写入框2内
  e2.config(state='readonly')#框2设置为不可编辑状态
def deng():#等于函数,这个函数将会绑在“确认”键上使用
  g=e1.get()#获取框1的内容
  g=g.replace('x','*')#将框内的'x'号改为'*'号赋值给g,要不改为有效数值时计算机识别不了
  g=chuli(g)#处理框1获取的字符串g
  shus1(g.replace('*','x'))#g.replace('*','x')将g字符串中的'*'换回'x'并展示到框1中
  try:#尝试运行以下命令
    g=eval(g)#将串g转化为有效数值
  except:#若报错,代表输入不符要求
    g='输入不符要求'#赋值
  shus2(str(g))#结果展示到框2中
def deng1(ev):#与上个函数一样,就是名字不一样,为的是绑定整个窗口的回车键,能在窗口输入回车键时完成结果的输出
  g=e1.get()
  g=g.replace('x','*')
  g=chuli(g)
  shus1(g.replace('*','x'))
  try:
    g=eval(g)
  except:
    g='输入不符要求'
  shus2(str(g))
def shus1(s):#清空框1、输入s串
  qing1()
  e1.insert(INSERT,s)
def shus2(s):#清空框2、输入s串
  e2.config(state='normal')#调整框2为可编辑
  qing2()#清空框2内容
  e2.insert(INSERT,s)#将s输入到框2
  e2.config(state='readonly')#调整框2为不可编辑
def long():#返回框1字符长度
  return(len(e1.get()))
def shan():#删除函数,用于删除框1的最后一个内容,将会和“C”键绑定
  e1.delete(long()-1)#删除框1最后一个字符
def qing1():#清空框1
  e1.delete(0,END)
def qing2():#清空框2
  e2.delete(0,END)

def chuli(s):#处理函数,将输入的s中的非法字符修改并返回
  s1=''
  for i in s:#检索s的每个值
    if i in '1234567890./*-+%()':#过滤s中在此串的字符加到串s1中
      s1+=i
  return s1#返回串s1(已处理完毕)

chang=480#存窗口的长
kuan=300#存窗口的宽
bian=60#存按钮的边长
jian=14#按键的间隔
chux=20#按键栏和框2的初始距离
chuy=10#所有组件和窗口左边的距离
kuangc=280#框1的长度
kuangk=50#框1的高度
from tkinter import *#导入TK库
from tkinter.messagebox import*#导入文本框输入模块
zi=('黑体',24)#字体元组
root=Tk()#初始化窗口
root.title('计算器')#窗口名
root.geometry('300x480')#窗口大小
root.resizable(width=False,height=False)#设置窗口大小不可调整
e1=Entry(root,font=zi)#初始化框1
e1.place(x=chuy,y=10,width=280,height=50)#放置框1
e2=Entry(root,font=('黑体',20))#初始化框2
e2.place(x=chuy+50,y=10+kuangk+5,width=230,height=40)#放置框2
e2.config(state='readonly')#设置框2不可修改
l=Label(root,text='结果',font=('',18))#初始化标签“结果”
l.place(x=5,y=70)#放置标签
#下边开始设置按钮和放置按钮
yihang=50#存放初始,就是第一行按钮时的y轴坐标
bqing=Button(root,text='C',font=zi,command=qing1)#初始化按钮“C”,绑定命令函数qing1来实现点击此按钮时清空框1
bqing.place(x=chuy,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“C”
bshan=Button(root,text='<-',font=zi,command=shan)#初始化按钮“<-”,绑定命令函数shan来实现点击此按钮时删除框1中的最后一个字符
bshan.place(x=chuy+jian+bian,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“<-”
bbaifen=Button(root,text='%',font=zi,command=baifen)#初始化按钮“%”,绑定命令函数baifen来实现点击此按钮时对框2中的数进行百分化,若已经含有“%”,则进行除100处理,实现快速除100功能,还未完善可能有bug
bbaifen.place(x=chuy+jian*2+bian*2,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“%”
bjia=Button(root,text='/',font=zi,command=shuchu)#初始化按钮“/”,绑定命令函数shuchu来实现点击此按钮时实现框1内输入“/”
bjia.place(x=chuy+jian*3+bian*3,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“/”

yihang=50+bian+jian#设置第二排按钮y轴位置,加上了按钮的边长和两排按钮间的间隔
b1=Button(root,text='1',font=zi,command=shu1)#初始化按钮“1”,绑定命令函数shu1来实现点击此按钮时框1输入字符“1”
b1.place(x=chuy,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“1”
b2=Button(root,text='2',font=zi,command=shu2)#初始化按钮“2”,绑定命令函数shu2来实现点击此按钮时框1输入字符“2”
b2.place(x=chuy+jian+bian,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“2”
b3=Button(root,text='3',font=zi,command=shu3)#初始化按钮“3”,绑定命令函数shu3来实现点击此按钮时框1输入字符“3”
b3.place(x=chuy+jian*2+bian*2,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“3”
bjia=Button(root,text='+',font=zi,command=shujia)#初始化按钮“+”,绑定命令函数shujia来实现点击此按钮时框1输入字符“+”
bjia.place(x=chuy+jian*3+bian*3,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“+”
yihang+=bian+jian#同上。设置第三排按钮y轴位置,再一次加上了按钮的边长和两排按钮间的间隔

b4=Button(root,text='4',font=zi,command=shu4)#初始化按钮“4”,绑定命令函数shu4来实现点击此按钮时框1输入字符“4”
b4.place(x=chuy,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“4”
b5=Button(root,text='5',font=zi,command=shu5)#初始化按钮“5”,绑定命令函数shu5来实现点击此按钮时框1输入字符“5”
b5.place(x=chuy+jian+bian,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“5”
b6=Button(root,text='6',font=zi,command=shu6)#初始化按钮“6”,绑定命令函数shu6来实现点击此按钮时框1输入字符“6”
b6.place(x=chuy+jian*2+bian*2,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“6”
bjian=Button(root,text='-',font=zi,command=shujian)#初始化按钮“-”,绑定命令函数shujian来实现点击此按钮时框1输入字符“-”
bjian.place(x=chuy+jian*3+bian*3,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“-”

yihang+=bian+jian#同上。设置第四排按钮y轴位置,再一次加上了按钮的边长和两排按钮间的间隔
b7=Button(root,text='7',font=zi,command=shu7)#初始化按钮“7”,绑定命令函数shu7来实现点击此按钮时框1输入字符“7”
b7.place(x=chuy,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“7”
b8=Button(root,text='8',font=zi,command=shu8)#初始化按钮“8”,绑定命令函数shu8来实现点击此按钮时框1输入字符“8”
b8.place(x=chuy+jian+bian,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“8”
b9=Button(root,text='9',font=zi,command=shu9)#初始化按钮“9”,绑定命令函数shu9来实现点击此按钮时框1输入字符“9”
b9.place(x=chuy+jian*2+bian*2,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“9”
bjian=Button(root,text='x',font=zi,command=shucheng)#初始化按钮“x”,绑定命令函数shucheng来实现点击此按钮时框1输入字符“x”
bjian.place(x=chuy+jian*3+bian*3,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“x”

yihang+=bian+jian#同上。设置第四排按钮y轴位置,再一次加上了按钮的边长和两排按钮间的间隔
b7=Button(root,text='求余',font=('',20),command=shuyv)#初始化按钮“求余”,绑定命令函数shuyv来实现点击此按钮时框1输入字符“%”
b7.place(x=chuy,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“求余”
b8=Button(root,text='0',font=zi,command=shu0)#初始化按钮“0”,绑定命令函数shu0来实现点击此按钮时框1输入字符“0”
b8.place(x=chuy+jian+bian,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“0”
b9=Button(root,text='.',font=zi,command=shudian)#初始化按钮“.”,绑定命令函数shucheng来实现点击此按钮时框1输入字符“.”
b9.place(x=chuy+jian*2+bian*2,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“.”
bjian=Button(root,text='确认',font=('',20),command=deng)#初始化按钮“确认”,绑定命令函数deng来实现点击此按钮时框2出现运算结果
bjian.place(x=chuy+jian*3+bian*3,y=chux+kuangk+yihang,width=bian,height=bian)#放置按钮“确认”
root.bind('<Return>',deng1)#整个窗口绑定键盘回车,以实现在窗口上敲击键盘回车时框2出结果
mainloop()#结束窗口

这个计算机窗口内没有设置“(” 和 “)”按钮,但是可以在输入框1中键盘输入括号,一样会得出正确结果
本篇内容就到此为止了,谢谢大家支持!我们下篇见!!!

猜你喜欢

转载自blog.csdn.net/qq_53891711/article/details/122543357