类名称即使在说明之后也未定义

时间:2015-11-08 12:21:31

标签: python tkinter

我是python GUI编程的新手,并完成了本教程,说明Tkinter使用

我尝试了以下代码

import Tkinter

class  simpleapp_tk(Tkinter.Tk):
     def __init__(self,parent):
           Tkinter.Tk.__init__(self,parent)
           self.parent=parent
           self.initialize()

  def initialize(self):
        pass
  if  __name__=="__main__":
        app=simpleapp_tk(None)
        app.title('my application')
        app.mainloop()

我预计会出现一个空白窗口但是却得到了这个

 Traceback (most recent call last):
  File "C:/Users/vedev/Desktop/python/app1.py", line 3, in <module>
    class  simpleapp_tk(Tkinter.Tk):
  File "C:/Users/vedev/Desktop/python/app1.py", line 12, in simpleapp_tk
app=simpleapp_tk(None)
NameError: name 'simpleapp_tk' is not defined

我该如何调试?

3 个答案:

答案 0 :(得分:2)

这是你缩进的问题。只是不要缩进

if __name__ == "__main__":
    app = simpleapp_tk(None)
    app.title('my application')
    app.mainloop()

在当前代码中,if语句在simpleapp_tk被定义时执行,因此name 'simpleapp_tk' is not defined

请参阅Indentation

  

逻辑行开头的前导空格(空格和制表符)用于计算行的缩进级别,而后者又用于确定语句的分组。

答案 1 :(得分:0)

整个if语句在课堂上。如果你把它搬到外面就行了。

问题是这样,if语句在定义类时立即执行,但在类定义期间,你还无法访问它。

答案 2 :(得分:0)

问题在于缩进部分。您需要为整个块遵循单个缩进级别,在本例中为类simpleapp_tk 。以上是适合我的代码:

import Tkinter

class simpleapp_tk(Tkinter.Tk):
    def __init__(self, parent):
        Tkinter.Tk.__init__(self, parent)
        self.parent = parent
        self.initialize()

    def initialize(self):
        pass

if __name__ == "__main__":
    app = simpleapp_tk(None)
    app.title('my application')
    app.mainloop()
相关问题