2011-08-20 27 views
1

当我尝试运行此代码时,我总是收到错误消息。 我有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 

回答

1

我调试的第一个规则:假设错误说的是千真万确的事实。在这种情况下,它说mytext是未定义的。当我看着你的代码时,我不得不同意:你没有定义一个名为mytext的全局变量。

,但是,定义了一些名为self.mytext。你应该使用下面的一行代码:

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

发布此线程之后我竟然想通了。 – userend

-1

使用本:

import tkinter 
root = tkinter. Tk()