在编写一个简单计算器的时候,出现了command错误的反馈,我改了很久一直找不到错在哪,command是Button里面的参数,但为什么回出现unknown option “-commmand”????
代码如下,希望路过的大神帮我看看TvT
出错的地方和对应的函数已经用#号标准
##一个满足基本运算(+-*/)、开方(sqrt)、求倒数(1/x)、切换正负号(±)的计算器
import tkinter, decimal, math
root = tkinter.Tk()
root.resizable(0, 0)
root.title('计算器')
vartext = tkinter.StringVar() #只存储数字,包括负数,即字符串首位数字可能为-/+号
symbol = None
result = None
temp_sotre = []
class Entry:
global vartext, symbol, result, temp_sotre
def __init__(self, entry):
self.current_input = entry
def func_Connect(self): ################################出错的函数###########
temp_sotre.append(self.current_input)
vartext.set(''.join(temp_sotre))
print(vartext.get())
def func_Plus_or_Minus(self):
if vartext.get():
if float(vartext.get())>0:
temp_sotre.insert(0,'-')
vartext.set(''.join(temp_sotre))
elif float(vartext.get())==0:
pass
else:
temp_sotre.insert(0, '+')
vartext.set(''.join(temp_sotre))
else:
temp_sotre.append('-')
vartext.set(''.join(temp_sotre))
def func_Decimal(self):
if temp_sotre.count('.') >= 1:
pass
else:
temp_sotre.append(self.current_input)
vartext.set(''.join(temp_sotre))
def func_Counter(self):
global result, symbol, temp_sotre
if self.current_input in ['sqrt', '1/x']:
if self.current_input == '1/x':
if decimal.Decimal(vartext.get())==0:
temp_sotre=['99999999']
vartext.set(''.join(temp_sotre))
else:
result = 1 / decimal.Decimal(vartext.get())
else:
if decimal.Decimal(vartext.get())<0:
vartext.set('wrong')
else:
result = math.sqrt(decimal.Decimal(vartext.get()))
elif self.current_input in ['+', '-', '*', '/']:
symbol = self.current_input
result = decimal.Decimal(vartext.get())
temp_sotre.clear()
vartext.set(''.join(temp_sotre))
else:
if symbol == '+':
result = result + decimal.Decimal(vartext.get())
elif symbol == '-':
result = result - decimal.Decimal(vartext.get())
elif symbol == '*':
result = result * decimal.Decimal(vartext.get())
else:
result = result / decimal.Decimal(vartext.get())
temp_sotre.clear()
vartext.set(str(result))
symbol = None
def func_Clear(self):
temp_sotre.clear()
vartext.set(''.join(temp_sotre))
def func_BackSpace(self):
if temp_sotre:
temp_sotre.pop()
vartext.set(''.join(temp_sotre))
def layout(root):
global temp_sotre, result, symbol, vartext
screen = tkinter.Label(root, bg='#FFFAFA', fg='#9400D3', width=25, height=2, anchor='se', textvariable=vartext)
screen.grid(row=0, columnspan=4)
button_1 = tkinter.Button(root, text='归零', width=5, bg='#90EE90', command=Entry('c').func_Clear)
button_2 = tkinter.Button(root, text='退格', width=12, bg='#90EE90', command=Entry('c').func_BackSpace)
button_3 = tkinter.Button(root, text='±', width=5, bg='#90EE90', command=Entry('c').func_Plus_or_Minus)
button_1.grid(row=1, column=0)
button_2.grid(row=1, column=2, columnspan=2)
button_3.grid(row=1, column=1)
button_4 = tkinter.Button(root, text=' 1/x ', width=5, bg='#90EE90', command=Entry('1/x').func_Counter)
button_5 = tkinter.Button(root, text=' / ', width=5, bg='#90EE90', command=Entry('/').func_Counter)
button_6 = tkinter.Button(root, text=' * ', width=5, bg='#90EE90', command=Entry('*').func_Counter)
button_7 = tkinter.Button(root, text=' - ', width=5, bg='#90EE90', command=Entry('-').func_Counter)
button_8 = tkinter.Button(root, text=' + ', width=5, bg='#90EE90', command=Entry('+').func_Counter)
button_9 = tkinter.Button(root, text='sqrt', width=5, bg='#90EE90', command=Entry('sqrt').func_Counter)
button_10 = tkinter.Button(root, text=' \n=\n ', width=5, bg='#90EE90', command=Entry('=').func_Counter)
button_11 = tkinter.Button(root, text=' . ', width=5, bg='#90EE90', command=Entry('.').func_Counter)
button_4.grid(row=2, column=0)
button_5.grid(row=2, column=1)
button_6.grid(row=2, column=2)
button_7.grid(row=2, column=3)
button_8.grid(row=3, column=3)
button_9.grid(row=4, column=3)
button_10.grid(row=5, column=3, rowspan=2)
button_11.grid(row=6, column=2)
#####以下按钮全部出现类似错误,如果Entry('7').func_Connect()加上中括号能暂时显示设置好的GUI界面#############
num_button_1 = tkinter.Button(root, text=' 7 ', width=5, bg='#FFD700', commmand=Entry('7').func_Connect)
num_button_2 = tkinter.Button(root, text=' 8 ', width=5, bg='#FFD700', commmand=Entry('8').func_Connect)
num_button_3 = tkinter.Button(root, text=' 9 ', width=5, bg='#FFD700', commmand=Entry('9').func_Connect)
num_button_4 = tkinter.Button(root, text=' 4 ', width=5, bg='#FFD700', commmand=Entry('4').func_Connect)
num_button_5 = tkinter.Button(root, text=' 5 ', width=5, bg='#FFD700', commmand=Entry('5').func_Connect)
num_button_6 = tkinter.Button(root, text=' 6 ', width=5, bg='#FFD700', commmand=Entry('6').func_Connect)
num_button_7 = tkinter.Button(root, text=' 1 ', width=5, bg='#FFD700', commmand=Entry('1').func_Connect)
num_button_8 = tkinter.Button(root, text=' 2 ', width=5, bg='#FFD700', commmand=Entry('2').func_Connect)
num_button_9 = tkinter.Button(root, text=' 3 ', width=5, bg='#FFD700', commmand=Entry('3').func_Connect)
num_button_10 = tkinter.Button(root, text=' 0 ', width=12, bg='#FFD700', commmand=Entry('0').func_Connect)
num_button_1.grid(row=3, column=0)
num_button_2.grid(row=3, column=1)
num_button_3.grid(row=3, column=2)
num_button_4.grid(row=4, column=0)
num_button_5.grid(row=4, column=1)
num_button_6.grid(row=4, column=2)
num_button_7.grid(row=5, column=0)
num_button_8.grid(row=5, column=1)
num_button_9.grid(row=5, column=2)
num_button_10.grid(row=6, column=0, columnspan=2)
layout(root)
root.mainloop()