我是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
我该如何调试?
答案 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()