from tkinter import *
import tkinter.font
from functools import partial
def get_input(entry,argu):
entry.insert(END,argu)
def backspace(entry):
input_len=len(entry.get())
entry.delete(input_len-1)
def clear(entry):
entry.delete(0,END)
def calculate(entry):
input = entry.get()
output = str(eval(input.strip()))
clear(entry)
entry.insert(END, output)
def GUI():
root=Tk()
root.title("四则运算计算器")
root.resizable(0,0)
entry_font=tkinter.font.Font(size=12)
entry=Entry(root,justify="right",font=entry_font)
entry.grid(row=0,column=0,columnspan=4,sticky=N,padx=5,pady=5)
button_font=tkinter.font.Font(size=10,weight=tkinter.font.BOLD)
button_bg="#9932CC"
button_press_bg='#B3EE3A'
myButton=partial(Button,root,bg=button_bg,padx=10,pady=3,activebackground=button_press_bg)
button7=myButton(text='7',command=lambda : get_input(entry,'7'))
button7.grid(row=1,column=0,pady=5)
button8=myButton(text='8',command=lambda : get_input(entry,'8'))
button8.grid(row=1,column=1,pady=5)
button9=myButton(text='9',command=lambda : get_input(entry,'9'))
button9.grid(row=1,column=2,pady=5)
button_add=myButton(text='+',command=lambda : get_input(entry,'+'))
button_add.grid(row=1,column=3,pady=5,padx=2)
button4=myButton(text='4',command=lambda : get_input(entry,'4'))
button4.grid(row=2,column=0,pady=5)
button5=myButton(text='5',command=lambda : get_input(entry,'5'))
button5.grid(row=2,column=1,pady=5)
button6=myButton(text='6',command=lambda : get_input(entry,'6'))
button6.grid(row=2,column=2,pady=5)
button_subtract=myButton(text='-',command=lambda : get_input(entry,'-'))
button_subtract.grid(row=2,column=3,pady=5)
button1=myButton(text='1',command=lambda : get_input(entry,'1'))
button1.grid(row=3,column=0,pady=5)
button2=myButton(text='2',command=lambda : get_input(entry,'2'))
button2.grid(row=3,column=1,pady=5)
button3=myButton(text='3',command=lambda : get_input(entry,'3'))
button3.grid(row=3,column=2,pady=5)
button_multiply=myButton(text='*',command=lambda : get_input(entry,'*'))
button_multiply.grid(row=3,column=3,pady=5)
button0=myButton(text='0',command=lambda : get_input(entry,'0'))
button0.grid(row=4,column=0,columnspan=2,pady=5,sticky=N+S+E+W,padx=2)
button_point=myButton(text='.',command=lambda : get_input(entry,'.'))
button_point.grid(row=4,column=2,pady=5)
button_divide=myButton(text='/',command=lambda : get_input(entry,'/'))
button_divide.grid(row=4,column=3,pady=5)
button_back=myButton(text='<-',command=lambda : backspace(entry))
button_back.grid(row=5,column=0,pady=5)
button_clear=myButton(text='clear',command=lambda : clear(entry))
button_clear.grid(row=5,column=1,pady=5)
button_equal=myButton(text='=',command=lambda : calculate(entry))
button_equal.grid(row=5,column=2,columnspan=2,padx=3,pady=5,sticky=N+S+E+W)
root.mainloop()
if __name__ == "__main__":
GUI()
输出:
