tkinter:未定义全局名称

时间:2011-08-20 17:00:51

标签: tkinter

当我尝试运行此代码时,我总是收到错误消息。 我有Tkinter文档并已阅读。我试图将文本放入一个人开始打字后会消失的字段。这是代码。

class MyGrid(Frame):
    def __init__(self, win=None):
        Frame.__init__(self, win)
        self.grid()
        self.mkWidgets()

    def mkWidgets(self):
        self.mytext = StringVar()
        self.mytext.set("Enter text here")
        self.e = Entry(bg='orange', textvariable=mytext, relief=SUNKEN, width=45)          
        self.e.grid(row=0, column=0)

app = MyGrid()

app.mainloop()

我总是收到这个错误:

NameError: global name 'mytext' is not defined

2 个答案:

答案 0 :(得分:1)

我的第一个调试规则:假设错误告诉了字面意义。在这种情况下,它表示mytext未定义。当我查看你的代码时,我必须同意:你没有定义一个名为mytext的全局变量。

,然而,定义一个名为self.mytext的东西。您应该在以下代码行中使用它:

self.e = Entry(bg='orange', textvariable=self.mytext, relief=SUNKEN, width=45) 

答案 1 :(得分:-1)

使用它:

import tkinter
root = tkinter. Tk()