2011-08-20 30 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()