from tkinter import *
from functools import partial
from calculate import *
def buju(root):
label = Label(root, width=36, height=1, bd=5, bg='white', anchor='se', textvariable=label_text)
label.grid(row=0, columnspan=5)
entry = Entry(root, width=23, bd=5, bg='white', justify="right", font=('微软雅黑', 12))
entry.grid(row=1, column=0, columnspan=5, sticky=N + W + S + E, padx=5, pady=5)
myButton = partial(Button, root, width=5, cursor='hand2', activebackground='#90EE90')
button_sin = myButton(text='sin', command=lambda: get_input(entry, 'sin('))
button_arcsin = myButton(text='arcsin', command=lambda: get_input(entry, 'arcsin('))
button_exp = myButton(text='e', command=lambda: get_input(entry, 'e'))
button_ln = myButton(text='ln', command=lambda: get_input(entry, 'ln('))
button_xy = myButton(text='x^y', command=lambda: get_input(entry, '^'))
button_sin.grid(row=2, column=0)
button_arcsin.grid(row=2, column=1)
button_exp.grid(row=2, column=2)
button_ln.grid(row=2, column=3)
button_xy.grid(row=2, column=4)
button_shanyige = myButton(text='←', command=lambda: backspace(entry))
button_shanquanbu = myButton(text=' C ', command=lambda: clear(entry))
button_zuokuohao = myButton(text='(', command=lambda: get_input(entry, '('))
button_youkuohao = myButton(text=')', command=lambda: get_input(entry, ')'))
button_genhao = myButton(text='√x', command=lambda: get_input(entry, '√('))
button_shanyige.grid(row=3, column=0)
button_shanquanbu.grid(row=3, column=1)
button_zuokuohao.grid(row=3, column=2)
button_youkuohao.grid(row=3, column=3)
button_genhao.grid(row=3, column=4)
button_7 = myButton(text=' 7 ', command=lambda: get_input(entry, '7'))
button_8 = myButton(text=' 8 ', command=lambda: get_input(entry, '8'))
button_9 = myButton(text=' 9 ', command=lambda: get_input(entry, '9'))
button_chu = myButton(text=' / ', command=lambda: get_input(entry, '/'))
button_yu = myButton(text='%', command=lambda: get_input(entry, '%'))
button_7.grid(row=4, column=0)
button_8.grid(row=4, column=1)
button_9.grid(row=4, column=2)
button_chu.grid(row=4, column=3)
button_yu.grid(row=4, column=4)
button_4 = myButton(text=' 4 ', command=lambda: get_input(entry, '4'))
button_5 = myButton(text=' 5 ', command=lambda: get_input(entry, '5'))
button_6 = myButton(text=' 6 ', command=lambda: get_input(entry, '6'))
button_cheng = myButton(text=' * ', command=lambda: get_input(entry, '*'))
button_4.grid(row=5, column=0)
button_5.grid(row=5, column=1)
button_6.grid(row=5, column=2)
button_cheng.grid(row=5, column=3)
button_1 = myButton(text=' 1 ', command=lambda: get_input(entry, '1'))
button_2 = myButton(text=' 2 ', command=lambda: get_input(entry, '2'))
button_3 = myButton(text=' 3 ', command=lambda: get_input(entry, '3'))
button_jian = myButton(text=' - ', command=lambda: get_input(entry, '-'))
button_dengyu = myButton(text=' \n = \n ', command=lambda: calculator(entry))
button_1.grid(row=6, column=0)
button_2.grid(row=6, column=1)
button_3.grid(row=6, column=2)
button_jian.grid(row=6, column=3)
button_dengyu.grid(row=6, column=4, rowspan=2)
button_pai = myButton(text=' π ', command=lambda: get_input(entry, 'π'))
button_0 = myButton(text=' 0 ', command=lambda: get_input(entry, '0'))
button_xiaoshudian = myButton(text=' . ', command=lambda: get_input(entry, '.'))
button_jia = myButton(text=' + ', command=lambda: get_input(entry, '+'))
button_pai.grid(row=7, column=0)
button_0.grid(row=7, column=1)
button_xiaoshudian.grid(row=7, column=2)
button_jia.grid(row=7, column=3)
def backspace(entry):
entry.delete(len(entry.get()) - 1)
def clear(entry):
entry.delete(0, END)
label_text.set('')
def get_input(entry, argu):
formula = entry.get()
for char in formula:
if '\u4e00' <= char <= '\u9fa5':
clear(entry)
entry.insert(INSERT, argu)
def calculator(entry):
try:
formula = entry.get()
if re.match('-?[\d+,π,e]\.?\d*$', formula):
label_text.set(''.join(formula + '='))
return
result = final_calc(formula_format(formula))
clear(entry)
entry.insert(END, result)
label_text.set(''.join(formula + '='))
except:
clear(entry)
entry.insert(END, '出错')
if __name__ == '__main__':
root = Tk()
root.title('作业')
root.resizable(0, 0)
global label_text
label_text = StringVar()
buju(root)
root.mainloop()
辛苦各位帮我看看,,这个是用python代码写的计算器,为什么我运行起来一点击等号不会显示计算结果啊,程序有什么问题嘛