简易计算器 tkinter模块

你说的曾经没有我的故事 提交于 2020-02-12 14:50:32
  1 import tkinter
  2 
  3 
  4 # # 设置显示窗体及其属性
  5 windows = tkinter.Tk()              # 70*60
  6 windows.title('SkyGrass catulator')
  7 windows.geometry('280x440')
  8 windows.resizable(width=False, height=False)
  9 
 10 
 11 # # 定义显示界面,一个输入的数字界面,另一个是结果显示界面
 12 result_user = tkinter.StringVar()       # 用户按键显示界面
 13 result_user.set(0)
 14 result_end = tkinter.StringVar()        # 计算结果返回界面
 15 result_end.set('')
 16 
 17 label = tkinter.Label(windows, font=('黑体', 21),fg='black',anchor = 'se',textvariable=result_user)
 18 label.place(x = 0, y = 90, width = 280, height = 50)
 19 label = tkinter.Label(windows, font=('黑体', 18),fg='#4F4F4F',anchor = 'se',textvariable=result_end)
 20 label.place(y = 10, width = 280, height = 70)
 21 
 22 
 23 ## 数字按键
 24 btn0 = tkinter.Button(windows,text = '0',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1, command = lambda : pressNum('0'))
 25 btn0.place(x = 0,y = 380,width = 70,height = 60)
 26 
 27 btn1 = tkinter.Button(windows,text = '1',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('1'))
 28 btn1.place(x = 0,y = 320,width = 70,height = 60)
 29 btn2 = tkinter.Button(windows,text = '2',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('2'))
 30 btn2.place(x = 70,y = 320,width = 70,height = 60)
 31 btn3 = tkinter.Button(windows,text = '3',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('3'))
 32 btn3.place(x = 140,y = 320,width = 70,height = 60)
 33 
 34 btn4 = tkinter.Button(windows,text = '4',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('4'))
 35 btn4.place(x = 0,y = 260,width = 70,height = 60)
 36 btn5 = tkinter.Button(windows,text = '5',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('5'))
 37 btn5.place(x = 70,y = 260,width = 70,height = 60)
 38 btn6 = tkinter.Button(windows,text = '6',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('6'))
 39 btn6.place(x = 140,y = 260,width = 70,height = 60)
 40 
 41 btn7 = tkinter.Button(windows,text = '7',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('7'))
 42 btn7.place(x = 0,y = 200,width = 70,height = 60)
 43 btn8 = tkinter.Button(windows,text = '8',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('8'))
 44 btn8.place(x = 70,y = 200,width = 70,height = 60)
 45 btn9 = tkinter.Button(windows,text = '9',font = ('微软雅黑',20),fg = ('red'),bg ='#87CEE8',bd = 1,command = lambda : pressNum('9'))
 46 btn9.place(x = 140,y = 200,width = 70,height = 60)
 47 
 48 
 49 
 50 # # 字符按键
 51 btntop = tkinter.Button(windows,text = '.',font = ('微软雅黑',20),fg = ('blue'),bg ='#87CEE8',bd = 1,command = lambda : pressCompu('.'))
 52 btntop.place(x = 140,y = 380,width = 70,height = 60)
 53 btnsum = tkinter.Button(windows,text = '=',font = ('微软雅黑',20),bg=('orange'),fg=('blue'),bd = 1,command = lambda : pressEqual())
 54 btnsum.place(x = 210,y = 320,width = 70,height = 120)
 55 btnadd = tkinter.Button(windows,text = '+',font = ('微软雅黑',20),fg = ('blue'),bg='#A9A9A9',bd = 1,command = lambda : pressCompu('+'))
 56 btnadd.place(x = 210,y = 200,width = 70,height = 120)
 57 btnsub = tkinter.Button(windows,text = '-',font = ('微软雅黑',20),fg = ('blue'),bg='#A9A9A9',bd = 1,command = lambda : pressCompu('-'))
 58 btnsub.place(x = 210,y = 140,width = 70,height = 60)
 59 btnmul = tkinter.Button(windows,text = '*',font = ('微软雅黑',20),fg = ('blue'),bg='#A9A9A9',bd = 1,command = lambda : pressCompu('*'))
 60 btnmul.place(x = 140,y = 140,width = 70,height = 60)
 61 btndiv = tkinter.Button(windows,text = '/',font = ('微软雅黑',20),fg = ('blue'),bg='#A9A9A9',bd = 1,command = lambda : pressCompu('/'))
 62 btndiv.place(x = 70,y = 140,width = 70,height = 60)
 63 btnclr = tkinter.Button(windows,text = 'AC',font = ('微软雅黑',20),bg=('orange'),fg = ('blue'),bd = 1,command = lambda : pressCompu('AC'))
 64 btnclr.place(x = 0,y = 140,width = 70,height = 60)
 65 btnb = tkinter.Button(windows,text = '←',font = ('微软雅黑',20),fg = ('blue'),bg='orange',bd = 1,command = lambda : pressCompu('b'))
 66 btnb.place(x = 70,y = 380,width = 70,height = 60)
 67 
 68 
 69 #操作函数
 70 user_list = []                       #设置一个变量 保存运算数字和符号的列表
 71 isPressSign = False                  #添加一个判断是否按下运算符号的标志,假设默认没有按下按钮
 72 isPressNum = False
 73 #数字函数
 74 def pressNum(num):                   #设置一个数字函数 判断是否按下数字 并获取数字将数字写在显示版上
 75     global user_list                 #全局化lists和按钮状态isPressSign
 76     global isPressSign
 77     if isPressSign == False:
 78         pass
 79     else:                            #重新将运算符号状态设置为否
 80         result_user.set(0)
 81         isPressSign = False
 82 
 83     #判断界面的数字是否为0
 84     oldnum = result_user.get()
 85     if oldnum =='0':                 #如过界面上数字为0 则获取按下的数字
 86         result_user.set(num)
 87     else:                            #如果界面上的而数字不是0  则链接上新按下的数字
 88         newnum = oldnum + num
 89         result_user.set(newnum)            #将按下的数字写到面板中
 90 
 91 
 92 #运算函数
 93 def pressCompu(sign):
 94     global user_list
 95     global isPressSign
 96     num = result_user.get()
 97     user_list.append(num)
 98 
 99     user_list.append(sign)
100     isPressSign = True
101 
102     if sign =='AC':
103         user_list.clear()
104         result_user.set(0)
105     if sign =='b':
106         a = num[0:-1]
107         user_list.clear()
108         result_user.set(a)
109 
110 
111 
112 #获取运算结果函数
113 def pressEqual():
114     global user_list
115     global isPressSign
116 
117 
118     curnum = result_user.get()           #设置当前数字变量,并获取添加到列表
119     user_list.append(curnum)
120 
121     computrStr = ''.join(user_list)
122     endNum = eval(computrStr)
123     result_user.set(endNum)
124     result_end.set(computrStr)
125     user_list.clear()
126 
127 windows.mainloop()
View Code

    

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!