import tkinter as tk #以别名方式导入tkinter库import tkinter.font as tkFontfrom tkinter import END #导入END参数#定义函数:向文本框中插入数据def get_input(entry,arg): entry.insert(END,arg) #在文本框的末尾插入字符arg#定义函数:回退操作def backspace(entry): length=len(entry.get()) #获取文本框中字符串的长度 entry.delete(length-1) #删除文本框中最后一个字符(最后一个字符的索引)#定义函数:清空操作def clear(entry): entry.delete(0,END) #删除索引0-END的字符#定义函数:计算字符串表达式的结果def equal(entry): str1=entry.get() #获取输入框中的字符串表达式 result=eval(str1) #eval()函数返回字符串表达式的结果 entry.delete(0,END) #清空文本框 entry.insert(0,result) #在文本框中插入计算结果def calculator(): #创建主窗口并笔输入和按键控件 root=tk.Tk() #创建主窗口 root.title("计算器") #设置窗口标题 root.geometry("200x250+600+200") #设置窗口的大小和位置 root.resizable(0,0) #设置窗口大小不可调 #创建输入组件 entry=tk.Entry(root,justify="right",font=tkFont.Font(size=13)) entry.grid(row=0,column=0,columnspan=4,sticky="W",padx=7,pady=5) #利用partial函数创建按键的固有属性 bg1="#D5E0EE" #设置按键的背景颜色 bg2="#E5E35B" #设置按键被点击后的背景颜色 #设置按键:数字7 b_7=tk.Button(root,text="7",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"7")) b_7.grid(row=1,column=0,pady=3) #设置按键:数字8 b_8=tk.Button(root,text="8",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"8")) b_8.grid(row=1,column=1,pady=3) #设置按键:数字9 b_9=tk.Button(root,text="9",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"9")) b_9.grid(row=1,column=2,pady=3) #设置按键:运算符+ b_add=tk.Button(root,text="+",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"+")) b_add.grid(row=1,column=3,pady=3) #设置按键:数字4 b_4=tk.Button(root,text="4",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"4")) b_4.grid(row=2,column=0,pady=3) #设置按键:数字5 b_5=tk.Button(root,text="5",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"5")) b_5.grid(row=2,column=1,pady=3) #设置按键:数字6 b_6=tk.Button(root,text="6",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"6")) b_6.grid(row=2,column=2,pady=3) #设置按键:运算符- b_sub=tk.Button(root,text="-",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"-")) b_sub.grid(row=2,column=3,pady=3) #设置按键:数字1 b_1=tk.Button(root,text="1",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"1")) b_1.grid(row=3,column=0,pady=3) #设置按键:数字2 b_2=tk.Button(root,text="2",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"2")) b_2.grid(row=3,column=1,pady=3) #设置按键:数字3 b_3=tk.Button(root,text="3",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"3")) b_3.grid(row=3,column=2,pady=3) #设置按键:运算符* b_mul=tk.Button(root,text="*",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"*")) b_mul.grid(row=3,column=3,pady=3) #设置按键:数字0 b_0=tk.Button(root,text="0",width=8,padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"0")) b_0.grid(row=4,column=0,columnspan=2,pady=3) #设置按键:小数点. b_point=tk.Button(root,text=".",width=1,padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,".")) b_point.grid(row=4,column=2,pady=3) #设置按键:运算符/ b_div=tk.Button(root,text="/",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:get_input(entry,"/")) b_div.grid(row=4,column=3,pady=3) #设置按键:退格<- b_back=tk.Button(root,text="<-",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:backspace(entry)) b_back.grid(row=5,column=0,pady=3) #设置按键:清空C b_clear=tk.Button(root,text="C",padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:clear(entry)) b_clear.grid(row=5,column=1,pady=3) #设置按键:等于= b_equal=tk.Button(root,text="=",width=8,padx=10,pady=3,bg=bg1,activebackground=bg2,command=lambda:equal(entry)) b_equal.grid(row=5,column=2,columnspan=2,pady=3) root.mainloop() #保持主窗口的显示calculator()