import tkinter as tk
class Ui(tk.Tk):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
# self.geometry("600x400+400+10")
self.title("计算器")
self['background'] = "gray"
self.attributes("-alpha",0.9)#设置透明度
font = ("黑体",18)
self.result_var = tk.StringVar()
self.result_var.set("")
self.lab = tk.Label(self,textvariable=self.result_var,font=font,height=2,width=30,justify=tk.RIGHT,anchor=tk.SE)
self.lab.grid(column=1,row=1,columnspan=5)
btn_clear = tk.Button(self,text='C',font=font,width=5,relief=tk.FLAT,bg='#b1b2b2')
btn_back = tk.Button(self,text='<-',font=font,width=5,relief=tk.FLAT,bg='#b1b2b2')
btn_mod = tk.Button(self,text='/',font=font,width=5,relief=tk.FLAT,bg='#b1b2b2')
btn_mul = tk.Button(self,text='X',font=font,width=5,relief=tk.FLAT,bg='#b1b2b2')
btn_clear.grid(column=2,row=2,padx=4,pady=2)
btn_back.grid(column=3,row=2,padx=4,pady=2)
btn_mod .grid(column=4,row=2,padx=4,pady=2)
btn_mul.grid(column=5,row=2,padx=4,pady=2)
btn_7 = tk.Button(self, text='7', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_8 = tk.Button(self, text='8', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_9 = tk.Button(self, text='9', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_sub = tk.Button(self, text='-', font=font, width=5, relief=tk.FLAT, bg='#b1b2b2')
btn_7.grid(column=2,row=3,padx=4,pady=2)
btn_8.grid(column=3,row=3,padx=4,pady=2)
btn_9.grid(column=4,row=3,padx=4,pady=2)
btn_sub.grid(column=5,row=3,padx=4,pady=2)
btn_4 = tk.Button(self, text='4', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_5 = tk.Button(self, text='5', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_6 = tk.Button(self, text='6', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_add = tk.Button(self, text='+', font=font, width=5, relief=tk.FLAT, bg='#b1b2b2')
btn_4.grid(column=2,row=4,padx=4,pady=2)
btn_5.grid(column=3,row=4,padx=4,pady=2)
btn_6.grid(column=4,row=4,padx=4,pady=2)
btn_add.grid(column=5,row=4,padx=4,pady=2)
btn_1 = tk.Button(self, text='1', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_2 = tk.Button(self, text='2', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_3 = tk.Button(self, text='3', font=font, width=5, relief=tk.FLAT, bg='#eacd1a')
btn_equal = tk.Button(self, text='=', font=font, width=5, height=3,relief=tk.FLAT, bg='#b1b2b2')
btn_1.grid(column=2, row=5, padx=4, pady=2)
btn_2.grid(column=3, row=5, padx=4, pady=2)
btn_3.grid(column=4, row=5, padx=4, pady=2)
btn_equal.grid(column=5, row=5, padx=4, pady=2,rowspan=2)
btn_0 = tk.Button(self, text='0', font=font, width=14, relief=tk.FLAT, bg='#b1b2b2')
btn_point = tk.Button(self, text='.', font=font, width=5, relief=tk.FLAT, bg='#b1b2b2')
btn_0.grid(column=2, row=6, padx=4, pady=2,columnspan=2)
btn_point.grid(column=4, row=6, padx=4, pady=2)
btn_0.config(command=lambda :self.on_btn_click('0'))
btn_1.config(command=lambda :self.on_btn_click('1'))
btn_2.config(command=lambda :self.on_btn_click('2'))
btn_3.config(command=lambda :self.on_btn_click('3'))
btn_4.config(command=lambda :self.on_btn_click('4'))
btn_5.config(command=lambda :self.on_btn_click('5'))
btn_6.config(command=lambda :self.on_btn_click('6'))
btn_7.config(command=lambda :self.on_btn_click('7'))
btn_8.config(command=lambda :self.on_btn_click('8'))
btn_9.config(command=lambda :self.on_btn_click('9'))
btn_point.config(command=lambda :self.on_btn_click('.'))
btn_add.config(command=lambda :self.on_btn_click('+'))
btn_sub.config(command=lambda :self.on_btn_click('-'))
btn_mul.config(command=lambda :self.on_btn_click('*'))
btn_mod.config(command=lambda :self.on_btn_click('/'))
btn_equal.config(command=self.jisuan)
btn_clear.config(command=self.on_clear)
btn_back.config(command=self.on_back)
def on_btn_click(self,data):
'''业务逻辑代码'''
...
def jisuan(self):
...
def show(self):
self.mainloop()
def on_clear(self):
...
def on_back(self):
...
class Caluator(Ui):
def on_btn_click(self,data):
self.result_var.set(self.result_var.get()+data)
def jisuan(self):
opt = self.result_var.get()
result = eval(opt)
self.result_var.set(str(result))
def on_clear(self):
self.result_var.set('')
def on_back(self):
if len(self.result_var.get())==0:
return
self.result_var.set(self.result_var.get()[:-1]) #去掉最后一个字符
if __name__ == '__main__':
app = Caluator()
app.show()
04-13
1730
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
10-19
1802
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-11
297
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交