Python 试图从自定义小部件获取属性时发生AttributeError

Python 试图从自定义小部件获取属性时发生AttributeError,python,tkinter,Python,Tkinter,我创建了一个自定义小部件,其中包含一个从Entry继承的类(myEntry)。当我实例化myEntry时,它的方法工作得很好,但是当我尝试获取它的属性时,我得到的是AttributeError 下面是代码的简化版本。我写它只是为了测试这个类,并试图找出我做错了什么。如果我点击btTest1,我会得到“约翰·史密斯”。如果我点击btTest2,我会得到“这也行”。但是,当我单击btTest3时,我得到以下信息: Exception in Tkinter callback Traceback (mo

我创建了一个自定义小部件,其中包含一个从Entry继承的类(myEntry)。当我实例化myEntry时,它的方法工作得很好,但是当我尝试获取它的属性时,我得到的是AttributeError

下面是代码的简化版本。我写它只是为了测试这个类,并试图找出我做错了什么。如果我点击btTest1,我会得到“约翰·史密斯”。如果我点击btTest2,我会得到“这也行”。但是,当我单击btTest3时,我得到以下信息:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
  File "C:/Users/Raquel/Documents/Controle de Pedidos/CP2/teste.py", line 15, in <lambda>
    btTest3 = Button(myFrame, text="Get value", command=lambda: print(txtTest.myValue))
AttributeError: 'myEntry' object has no attribute 'myValue'

这个问题是因为线路问题-

self = Entry(master, textvariable=myVar)
您正在将局部变量
self
更改为创建的新
Entry
对象,然后为其设置
.myValue
属性。原始的
myEntry
对象没有该属性,只有您创建的新
Entry
对象具有该属性,但在此之后它将被丢弃

您确实不需要上面的行,只需要行
super()。\uuu init\uuu(master,textvariable=myVar)
就足够了。您可以删除行-
self=Entry(master,textvariable=myVar)
。范例-

class myEntry(Entry):
    def __init__(self, master, myVar, myValue):
        super().__init__(master, textvariable=myVar)
        self.myValue = myValue

就这样,现在一切都正常了。非常感谢。
class myEntry(Entry):
    def __init__(self, master, myVar, myValue):
        super().__init__(master, textvariable=myVar)
        self.myValue = myValue