Attribute error: 'app' object has no attribute 'calc'
Attribute error: 'app' object has no attribute 'calc'
我在 python 中做了一段时间的计算器,就在我以为我完成了它的时候,它给了我一个错误,说“属性错误:'app' 对象没有属性 'calc'。有人能帮我吗?这是代码。(顺便说一句,如果你今天过得很糟糕,请继续滚动我不想让任何人告诉我我是一个不知道的愚蠢的滑行者如何编写一个简单的计算器)
from tkinter import*
def iCalc(source, side):
storeObj = Frame (source, borderwidth=4, bd=4, bg="orange")
storeObj.pack(side=side, expand=YES, fill=BOTH)
return storeObj
def button (source, side, text, command = None) :
storeObj = Button(source, text=text, command=command)
storeObj.pack(side=side, expand=YES, fill=BOTH)
return storeObj
class app(Frame):
def __init__(self) :
Frame.__init__(self)
self.option_add('*Font', 'arial 20 bold')
self.pack(expand=YES, fill=BOTH)
self.master.title('Calculator')
display = StringVar()
Entry(self, relief= None,
textvariable=display, justify='right', bd=30, bg="orange").pack(side=TOP, expand=YES, fill=BOTH)
for clearBut in (["CE"], ["C"]):
erase = iCalc(self, TOP)
for ichar in clearBut:
button(erase, LEFT, ichar,
lambda storeObj=display, q=ichar: storeObj.set(''))
for NumBut in ("789/", "456*", "321-", "0.+") :
FunctionNum = iCalc(self, TOP)
for char in NumBut:
button(FunctionNum, LEFT, char,
lambda storeObj=display, q=char: storeObj.set(storeObj.get() + q))
EqualsButton = iCalc(self, TOP)
for iEquals in "=":
if iEquals == "=":
btniEquals = button(EqualsButton,LEFT, iEquals)
btniEquals.bind('<ButtonRelease-1>',
lambda e, s=self, storeObj=display: s.calc(storeObj), '+')
else:
btniEquals = button(EqualsButton, LEFT, iEquals,
lambda storeObj=display, s=' %s '%iEquals: storeObj.set(storeObj.get()+s))
if __name__ == '__main__':
app () .mainloop()
如果有人在此平台上对您无礼,我深表歉意。我们都在这里学习,没有人应该互相指责。
无论如何,我可以在 lambda e, s=self, storeObj=display: s.calc(storeObj), '+')
行中看到这一点。你已经使用了 s.calc
但你没有在任何地方定义它。您需要定义一个新的 calc()
函数。
我在 python 中做了一段时间的计算器,就在我以为我完成了它的时候,它给了我一个错误,说“属性错误:'app' 对象没有属性 'calc'。有人能帮我吗?这是代码。(顺便说一句,如果你今天过得很糟糕,请继续滚动我不想让任何人告诉我我是一个不知道的愚蠢的滑行者如何编写一个简单的计算器)
from tkinter import*
def iCalc(source, side):
storeObj = Frame (source, borderwidth=4, bd=4, bg="orange")
storeObj.pack(side=side, expand=YES, fill=BOTH)
return storeObj
def button (source, side, text, command = None) :
storeObj = Button(source, text=text, command=command)
storeObj.pack(side=side, expand=YES, fill=BOTH)
return storeObj
class app(Frame):
def __init__(self) :
Frame.__init__(self)
self.option_add('*Font', 'arial 20 bold')
self.pack(expand=YES, fill=BOTH)
self.master.title('Calculator')
display = StringVar()
Entry(self, relief= None,
textvariable=display, justify='right', bd=30, bg="orange").pack(side=TOP, expand=YES, fill=BOTH)
for clearBut in (["CE"], ["C"]):
erase = iCalc(self, TOP)
for ichar in clearBut:
button(erase, LEFT, ichar,
lambda storeObj=display, q=ichar: storeObj.set(''))
for NumBut in ("789/", "456*", "321-", "0.+") :
FunctionNum = iCalc(self, TOP)
for char in NumBut:
button(FunctionNum, LEFT, char,
lambda storeObj=display, q=char: storeObj.set(storeObj.get() + q))
EqualsButton = iCalc(self, TOP)
for iEquals in "=":
if iEquals == "=":
btniEquals = button(EqualsButton,LEFT, iEquals)
btniEquals.bind('<ButtonRelease-1>',
lambda e, s=self, storeObj=display: s.calc(storeObj), '+')
else:
btniEquals = button(EqualsButton, LEFT, iEquals,
lambda storeObj=display, s=' %s '%iEquals: storeObj.set(storeObj.get()+s))
if __name__ == '__main__':
app () .mainloop()
如果有人在此平台上对您无礼,我深表歉意。我们都在这里学习,没有人应该互相指责。
无论如何,我可以在 lambda e, s=self, storeObj=display: s.calc(storeObj), '+')
行中看到这一点。你已经使用了 s.calc
但你没有在任何地方定义它。您需要定义一个新的 calc()
函数。