此错误的任何解决方法---> TypeError:“ StringVar”对象不可调用

威廉·杰斐逊

我正在尝试创建此GUI计算器,但似乎无法调用'StringVar'对象。该问题在我的其他运算符(例如-,*,/,=等)中仍然存在(我对编码和python很熟悉),

从tkinter导入Tk,Label,StringVar,Entry,Button,W,E

类计算器:操作数:StringVar运算符:无结果:浮点数

def __init__(self):
    master = Tk()        
    self.operator = None
    self.operand = StringVar()
    self.result = 0
    
         
    Label(master,text = "Calculator").grid(row = 0, column=0, columnspan=2)
    
    UserInputEntry = master.register(self.operandValid)
    Entry(master, validate="key", validatecommand=(UserInputEntry,'%P'), textvariable=self.operand).grid(row=0, column=0, columnspan=3)
                                     
    addAction = lambda: self.operand(lambda a, b: a+b)
    Button(master,text = "+",command=addAction).grid(row=1, column=3, sticky=W+E)
    
    subAction = lambda: self.operand(lambda a, b: a-b)
    Button(master,text = "-",command=subAction).grid(row=2, column=3, sticky=W+E)
    
    mulAction = lambda: self.operand(lambda a, b: a*b)
    Button(master,text = "X",command=mulAction).grid(row=3, column=3, sticky=W+E)
    
    divAction = lambda: self.operand(lambda a, b: a/b)
    Button(master,text = "/",command=divAction).grid(row=4, column=3, sticky=W+E)
    
    equal = lambda: self.operand(None)
    Button(master,text = "=",command=equal).grid(row=4, column=2, sticky=W+E)       
    
    enter1 = lambda: self.enterNumber("1")
    Button(master,text = "1",command=enter1).grid(row=1, column=0, sticky=W+E)
    
    
    enter2 = lambda: self.enterNumber("2")
    Button(master,text = "2",command=enter2).grid(row=1, column=1, sticky=W+E)
    
    enter3 = lambda: self.enterNumber("3")
    Button(master,text = "3",command=enter3).grid(row=1, column=2, sticky=W+E)
    
    
    enter4 = lambda: self.enterNumber("4")
    Button(master,text = "4",command=enter4).grid(row=2, column=0, sticky=W+E)
    
    enter5 = lambda: self.enterNumber("5")
    Button(master,text = "5",command=enter5).grid(row=2, column=1, sticky=W+E)
    
    enter6 = lambda: self.enterNumber("6")
    Button(master,text = "6",command=enter6).grid(row=2, column=2, sticky=W+E)
    
    enter7 = lambda: self.enterNumber("7")
    Button(master,text = "7",command=enter7).grid(row=3, column=0, sticky=W+E)
    
    enter8 = lambda: self.enterNumber("8")
    Button(master,text = "8",command=enter8).grid(row=3, column=1, sticky=W+E)
    
    enter9 = lambda: self.enterNumber("9")
    Button(master,text = "9",command=enter9).grid(row=3, column=2, sticky=W+E)
    
    enter0 = lambda: self.enterNumber("0")
    Button(master,text = "0", command=enter0).grid(row=4, column=0, sticky=W+E)
    
    enterDecimal = lambda: self.enterNumber(".")
    Button(master,text=".",command=enterDecimal).grid(row=4, column=1, sticky=W+E)
    
    master.mainloop()
    
    
def operation(self, op):
    print("The previous operation was {self.operation}")
    self.result = self.operator(self.result, float(self.operand))
    self.operator = op

def operandValid(self, operand):
    try: 
        operand = float(operand)
        return True
    except:
        return False
def enterNumber(self,character): 
            
    #if self.resultDisplayed: 
        #self.resultDisplayed = False
        #self.operand.set("")#reset the Entry for new input
    
    if(self.operandValid(self.operand.get()+character)):
        self.operand.set(self.operand.get()+character)

计算器()

addAction = lambda:self.operand(lambda a,b:a + b)TypeError:'StringVar'对象不可调用

码头

那是因为您所做的等同于StringVar()(lambda a, b: a+b)您应该将lambada留在里面,self.operand然后再放其他所有东西。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

类型错误:“StringVar”对象不可调用

解决 TypeError: 'str' 对象不可调用

不了解此TypeError的原因:'dict'对象不可调用

使用zip()函数时如何解决以下错误?TypeError:“列表”对象不可调用

python fbprophet错误,TypeError:“模块”对象不可调用

错误TypeError:“ str”对象不可调用python

ggplot Python:错误:TypeError:“模块”对象不可调用

火炬1.7.0 | DataLoader错误-TypeError:“模块”对象不可调用

我不断收到错误TypeError:“ Tensor”对象不可调用

Python错误:TypeError:'list'对象不可调用

Python 错误消息:TypeError: 'str' 对象不可调用

Discord Bot 错误:TypeError:“str”对象不可调用

H @ ow可以在paython中解决此错误“ TypeError:'str'对象不可调用”

我的脚本具有answe:TypeError:'模块'对象不可调用。我该如何解决?

如何解决此线程化pyside代码中的“ TypeError:'list'对象不可调用”错误,在类似情况下似乎可以正常工作?

调用生成器对象将返回错误“ TypeError:'dict'对象不可调用”

我不知道如何处理此Python错误TypeError:“ tuple”对象不可调用

TypeError:“ int”对象不可调用-如何确定导致此错误的原因?

TypeError: 'NoneType' 对象不可调用(在 Windows 中可以,但在 linux 中出现此错误)

TypeError:“类名”对象不可调用(在通过tkinter.Button.command调用的方法内部)

TypeError:“集合”对象不可调用。如果您要在“集合”上调用“解释”方法

在Python中使用__getattr__方法腌制的对象会返回“ TypeError,对象不可调用”

以前的解决方案不起作用:TypeError:'str'对象不可调用

解决“ TypeError:'list'对象不可调用”问题时遇到困难

如何使用Python解决Selenium:TypeError:“模块”对象不可调用

Django-rest-framework:身份验证/权限错误:TypeError:'str'对象不可调用

异步和异步错误-TypeError:'协程'对象不可调用

如何在Pytorch中修复“ TypeError:'Tensor'对象不可调用”错误?

升级pytest导致TypeError:'NoneType'对象不可调用错误