#filename:Caculater import tkinter,time,decimal,math,string root=tkinter.Tk() root.title('计算器') root.resizable(0,0) global cuncu, vartext, result, fuhao result = fuhao = None vartext = tkinter.StringVar() cuncu = [] class anjianzhi: global cuncu, vartext, result, fuhao def __init__(self,anjian): self.anjian = anjian def jia(self): cuncu.append(self.anjian) vartext.set( ''.join(cuncu)) def tui(self): cuncu.pop() vartext.set(''.join(cuncu)) def clear(self): cuncu.clear() vartext.set('') result = None fuhao = None def zhengfu(self): if cuncu[0]: if cuncu[0] == '-': cuncu[0] = '+' elif cuncu[0] == '+': cuncu[0] = '-' else: cuncu.insert(0, '-') vartext.set(''.join(cuncu)) def xiaoshudian(self): if cuncu.count('.') >= 1: pass else: if cuncu == [] : cuncu.append('0') cuncu.append('.') vartext.set(''.join(cuncu)) def yunshuan(self): global cuncu, vartext, result, fuhao if vartext.get() == '': pass else: get1 = decimal.Decimal(vartext.get()) if self.anjian in ('1/x','sqrt'): if self.anjian == '1/x': result = 1/get1 elif self.anjian == 'sqrt': result = math.sqrt(get1) elif self.anjian in ('+','-','*','/','='): if fuhao is not None: get1 = decimal.Decimal(result) get2 = decimal.Decimal(vartext.get()) if fuhao == '+': result = get1 + get2 elif fuhao == '-': result = get1 - get2 elif fuhao == '*': result = get1 * get2 elif fuhao == '/': result = get1 / get2 else: result = get1 if self.anjian == '=': fuhao = None else: fuhao = self.anjian print(fuhao) print(result) vartext.set(str(result)) cuncu.clear() def copy1(): # tkinter.Misc().clipboard_clear() tkinter.Misc().clipboard_append(string(vartext.get())) def buju(root): global cuncu, vartext, result, fuhao entry1 = tkinter.Label(root, width=30, height=2, bg='white', anchor='se', textvariable=vartext) entry1.grid(row=0, columnspan=5) buttonMC=tkinter.Button(root,text='MC',width=5) buttonMR=tkinter.Button(root,text='MR',width=5) buttonMS=tkinter.Button(root,text='MS',width=5) buttonM1=tkinter.Button(root,text='M+',width=5) buttonM2=tkinter.Button(root,text='M-',width=5) buttonMC.grid(row=1,column=0) buttonMR.grid(row=1,column=1) buttonMS.grid(row=1,column=2) buttonM1.grid(row=1,column=3) buttonM2.grid(row=1,column=4) buttonJ=tkinter.Button(root,text='←',width=5,command=anjianzhi('c').tui) buttonCE=tkinter.Button(root,text='CE',width=5) buttonC=tkinter.Button(root,text=' C ',width=5,command=anjianzhi('c').clear) button12=tkinter.Button(root,text='±',width=5,command=anjianzhi('c').zhengfu) buttonD=tkinter.Button(root,text='√',width=5,command=anjianzhi('sqrt').yunshuan) buttonJ.grid(row=2,column=0) buttonCE.grid(row=2,column=1) buttonC.grid(row=2,column=2) button12.grid(row=2,column=3) buttonD.grid(row=2,column=4) button7=tkinter.Button(root,text=' 7 ',width=5,command=anjianzhi('7').jia) button8=tkinter.Button(root,text=' 8 ',width=5,command=anjianzhi('8').jia) button9=tkinter.Button(root,text=' 9 ',width=5,command=anjianzhi('9').jia) buttonc=tkinter.Button(root, text=' / ',width=5,command=anjianzhi('/').yunshuan) buttonf= tkinter.Button(root, text=' % ',width=5) button7.grid(row=3,column=0) button8.grid(row=3,column=1) button9.grid(row=3,column=2) buttonc.grid(row=3,column=3) buttonf.grid(row=3,column=4) button4=tkinter.Button(root,text=' 4 ',width=5,command=anjianzhi('4').jia) button5=tkinter.Button(root,text=' 5 ',width=5,command=anjianzhi('5').jia) button6=tkinter.Button(root,text=' 6 ',width=5,command=anjianzhi('6').jia) buttonx=tkinter.Button(root,text=' * ',width=5,command=anjianzhi('*').yunshuan) buttonfs=tkinter.Button(root,text='1/x',width=5,command=anjianzhi('1/x').yunshuan) button4.grid(row=4,column=0) button5.grid(row=4,column=1) button6.grid(row=4,column=2) buttonx.grid(row=4,column=3) buttonfs.grid(row=4,column=4) button1 = tkinter.Button(root, text=' 1 ',width=5,command=anjianzhi('1').jia) button2 = tkinter.Button(root, text=' 2 ',width=5,command=anjianzhi('2').jia) button3 = tkinter.Button(root, text=' 3 ',width=5,command=anjianzhi('3').jia) button_= tkinter.Button(root, text=' - ',width=5,command=anjianzhi('-').yunshuan) buttondy= tkinter.Button(root, text=' \n = \n ',width=5,command=anjianzhi('=').yunshuan) button1.grid(row=5, column=0) button2.grid(row=5, column=1) button3.grid(row=5, column=2) button_.grid(row=5, column=3) buttondy.grid(row=5, column=4,rowspan=2) button0=tkinter.Button(root,text=' 0 ',width=11,command=anjianzhi('0').jia) buttonjh = tkinter.Button(root,text=' . ',width=5,command=anjianzhi('c').xiaoshudian) buttonjia=tkinter.Button(root,text=' + ',width=5,command=anjianzhi('+').yunshuan) button0.grid(row=6,column=0,columnspan=2) buttonjh.grid(row=6,column=2) buttonjia.grid(row=6,column=3) def caidan(root): menu=tkinter.Menu(root) submenu1=tkinter.Menu(menu,tearoff=0) menu.add_cascade(label='查看',menu=submenu1) submenu2 = tkinter.Menu(menu, tearoff=0) submenu2.add_command(label='复制') submenu2.add_command(label='粘贴') menu.add_cascade(label='编辑',menu=submenu2) submenu = tkinter.Menu(menu, tearoff=0) submenu.add_command(label='查看帮助') submenu.add_separator() submenu.add_command(label='关于计算机') menu.add_cascade(label='帮助',menu=submenu) root.config(menu=menu) buju(root) caidan(root) root.mainloop()