0

我的 Tkinter Entry 小部件出现问题。我只是在测试一些东西,并想让我的回调打印出我在 Entry self.a 中输入的任何内容。但我收到了这个错误。

文件“C:\Python27\lib\lib-tk\Tkinter.py”,第 1410 行,在调用中 return self.func(*args) 文件“C:/Users/Andy/testimage.py”,第 146 行,在 get print a.get(self) NameError: global name 'a' is not defined

我想知道是否有人可以告诉我我做错了什么。我正确链接了回调函数,因为如果我让它打印“aasdfasd”,它会在我按下按钮时打印出来。

def clicked_wbbalance(self):
    self.top = Toplevel()
    self.top.title("LASKJDF...")
    Label(self.top, text="Enter low level").grid(row=0, column=0,padx=10)
    Label(self.top, text="Enter high level").grid(row=1, column=0,padx=10)
    Label(self.top, text="Values must be between 0 to 255").grid(row=3, column=0)
    Button(self.top, text="Ok", command=self.get).grid(row=3, column = 1)

    self.a =Entry(self.top).grid(row=0, column=1,padx=10)
    self.b =Entry(self.top).grid(row=1, column=1,padx=10)

def get(self):
    print self.a.get(self)
4

2 回答 2

3

正如 RocketDonkey 所指出的,您的回溯与您发布的代码不匹配。

您编写的代码将生成如下回溯:

AttributeError: 'NoneType' object has no attribute 'get'

根本问题是grid返回None。这意味着属性ab将是None因为它们被分配了调用的结果grid。通过将对象创建和小部件放置在不同的行上来解决这个问题:

self.a = Entry(self.top)
self.b = Entry(self.top)

self.a.grid(row=0, column=1,padx=10)
self.b.grid(row=1, column=1,padx=10)
于 2012-11-11T22:31:51.653 回答
1

您回溯说print a.get(self) NameError: global name 'a' is not defined,但是您发布的代码使用了语法print self.a.get(self)(这似乎是正确的)。因此,如果您在第 146 行检查,您没有a以. 尝试在第 146 行前面添加,看看问题是否仍然存在。selfaaselfa

于 2012-11-11T22:22:13.623 回答