鱼C论坛

 找回密码
 立即注册
查看: 782|回复: 73

[作品展示] 简单的计算器实现

[复制链接]
最佳答案
0 
发表于 2018-4-4 19:06:44 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
废话不多说,直接上图
df92f8dc9b7052d7ebedf238afe8bdf.png 4046ae61c1b5b39aadf32c35561af44.png
81b35b27989e8ddb8408836fecc2033.png


源码如下:
  1. from tkinter import *              #直接引用tkinter全部变量,这样代码多比较方便

  2. root=Tk()
  3. root.minsize(280,495)              #这里是定义窗口的大小,喜欢多大定多大
  4. root.title('小小计算器')           #名字随意哈

  5. v1=StringVar()              #这里定义了两个StringVar()
  6. v1.set(0)                   #v1用于显示过程
  7. v2=StringVar()              #v2显示结果
  8. v2.set('')

  9. Label(root,textvariable=v2,font=('Aharoni',20),bg='#EEE9E9',bd='9',fg='#828282',\
  10.       anchor='se').place(width=280,height=150)
  11. Label(root,textvariable=v1,font=('Aharoni',30),bg='#EEE9E9',bd='9',fg='black',\
  12.       anchor='se').place(y=150,width=280,height=70)
  13. #标签的字体是WIN7自带的,如果报错可以换成黑体
  14. #y的布局设计好,因为和窗口大小有关
  15. #以下是按钮的设计,字体颜色都可以自定哈
  16. Button(root,text='7',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('7'))\
  17.         .place(x=0,y=275,width=70,height=55)
  18. Button(root,text='8',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('8'))\
  19.         .place(x=70,y=275,width=70,height=55)
  20. Button(root,text='9',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('9'))\
  21.         .place(x=140,y=275,width=70,height=55)

  22. Button(root,text='4',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('4'))\
  23.         .place(x=0,y=330,width=70,height=55)
  24. Button(root,text='5',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('5'))\
  25.         .place(x=70,y=330,width=70,height=55)
  26. Button(root,text='6',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('6'))\
  27.         .place(x=140,y=330,width=70,height=55)

  28. Button(root,text='1',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('1'))\
  29.         .place(x=0,y=385,width=70,height=55)
  30. Button(root,text='2',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('2'))\
  31.         .place(x=70,y=385,width=70,height=55)
  32. Button(root,text='3',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('3'))\
  33.         .place(x=140,y=385,width=70,height=55)


  34. Button(root,text='AC',font=('Aharoni',20),fg='orange',bd=0.5,command=lambda:Sign1('AC'))\
  35.         .place(x=210,y=220,width=70,height=55)
  36. Button(root,text='BACK',font=('Aharoni',13),fg='#4F4F4F',bd=0.5,command=lambda:Sign1('BACK'))\
  37.         .place(x=140,y=220,width=70,height=55)
  38. Button(root,text='+',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:Sign1('+'))\
  39.         .place(x=0,y=220,width=70,height=55)
  40. Button(root,text='-',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:Sign1('-'))\
  41.         .place(x=70,y=220,width=70,height=55)
  42. Button(root,text='*',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:Sign1('*'))\
  43.         .place(x=210,y=275,width=70,height=55)
  44. Button(root,text='/',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:Sign1('/'))\
  45.         .place(x=210,y=330,width=70,height=55)
  46. Button(root,text='=',font=('Aharoni',20),bg='orange',fg='#4F4F4F',bd=0.5,command=lambda:Math())\
  47.         .place(x=210,y=385,width=70,height=110)
  48. Button(root,text='00',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('00'))\
  49.         .place(x=70,y=440,width=70,height=55)
  50. Button(root,text='.',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('.'))\
  51.         .place(x=140,y=440,width=70,height=55)
  52. Button(root,text='0',font=('Aharoni',20),fg='#4F4F4F',bd=0.5,command=lambda:PressNum('0'))\
  53.         .place(x=0,y=440,width=70,height=55)


  54. lists=[]                      #创建一个列表,用于存放数据
  55. PressOK=False                 #这里是判断按钮是否按下,默认为没按
  56. PressNo=False

  57. def PressNum(num):           #设置一个数字函数,判断是否按下
  58.     global lists              #全局化列表和按钮状态
  59.     global PressOK            #按下则显示在v1 Label上
  60.     if PressOK==False:
  61.         pass
  62.     else:
  63.         v1.set(0)
  64.         PressOK=False

  65.     oldnum=v1.get()
  66.     if oldnum=='0':          #如果界面的数字为0,则获取新按的数字
  67.         v1.set(num)         
  68.     else:
  69.         newnum=oldnum+num     #如果界面的数字不为0则加上新按的数字
  70.         v1.set(newnum)        #显示新数字

  71. def Sign1(sign):              
  72.     global lists
  73.     global PressOK
  74.     num=v1.get()
  75.     lists.append(num)       #将界面数字保存到列表中

  76.     lists.append(sign)      #将按下的运算符号保存列表中
  77.     PressOK = True

  78.     if sign=='AC':    #按下AC,清空列表,并且屏幕显示数字0
  79.         lists.clear()
  80.         v1.set(0)
  81.         v2.set('')
  82.     if sign=='BACK':   #清空列表,显示当前数字第一位和倒数第二位
  83.         a=num[0:-1]
  84.         lists.clear()
  85.         v1.set(a)

  86. def Math():
  87.     global lists
  88.     global PressOK

  89.     newnum1=v1.get()      
  90.     lists.append(newnum1)    #设置当前数字变量,并添加到列表

  91.     Str=''.join(lists)  #列表内容用join命令将字符串连接起来
  92.     endnum=eval(Str)    #eval命令运算字符串内容
  93.     v1.set(endnum)      #v1显示运算结果
  94.     v2.set(Str)         #v2显示运算过程
  95.     lists.clear()       #清空列表

  96. root.mainloop()
复制代码
最佳答案
0 
发表于 2018-4-4 20:36:09 | 显示全部楼层
看看
最佳答案
0 
发表于 2018-4-10 18:49:20 | 显示全部楼层
看看
最佳答案
2 
发表于 2018-4-11 17:36:06 | 显示全部楼层
厉害!
最佳答案
1 
发表于 2018-4-11 17:58:45 | 显示全部楼层
最佳答案
0 
发表于 2018-4-12 13:19:04 | 显示全部楼层
最佳答案
0 
发表于 2018-4-14 22:27:51 | 显示全部楼层
谢谢楼主分享
最佳答案
0 
发表于 2018-4-14 22:37:13 From FishC Mobile | 显示全部楼层
学习
最佳答案
0 
发表于 2018-4-14 23:03:49 | 显示全部楼层
瞅瞅
最佳答案
0 
发表于 2018-4-15 12:18:03 | 显示全部楼层
瞅瞅啊
最佳答案
0 
发表于 2018-4-15 13:22:07 | 显示全部楼层
1
最佳答案
0 
发表于 2018-4-15 13:52:47 | 显示全部楼层
a
最佳答案
0 
发表于 2018-4-15 13:53:42 | 显示全部楼层
fasf
最佳答案
0 
发表于 2018-4-15 15:23:13 | 显示全部楼层
最佳答案
0 
发表于 2018-4-15 17:03:46 | 显示全部楼层
66
最佳答案
0 
发表于 2018-4-16 01:19:15 | 显示全部楼层
好东西
最佳答案
1 
发表于 2018-4-16 10:27:31 | 显示全部楼层
keyi
最佳答案
0 
发表于 2018-4-16 10:32:54 | 显示全部楼层
学习一波
最佳答案
0 
发表于 2018-4-16 20:24:34 From FishC Mobile | 显示全部楼层
可以666
最佳答案
0 
发表于 2018-4-16 20:46:14 | 显示全部楼层
鱼油厉害
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号 )

GMT+8, 2018-7-21 21:38

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表