2011-04-17 52 views
0

嗨 我只是執行以下代碼:如何擺脫Python中的NameError?

from Tkinter import * 

class LabelDemo(Frame): 
    def __init__(self): 
     Frame.__init__(self) 

     self.pack(expand = YES, fill = BOTH) 
     self.master.title("Labels") 

     self.Label3 = Label(self, bitmap = "warning") 
     self.Label3.pack(side = LEFT) 

if __name__ == "__main__": 
    LabelDemo().mainloop() 

它給了我NameError:名字 'LabelDemo' 沒有定義。

可能是什麼原因?

+0

你的代碼在我的電腦上運行良好,所以我懷疑還有別的你做錯了。 – NPE 2011-04-17 09:44:04

+0

發佈完整的回溯,它通常會告訴你哪一行是哪個文件和哪個代碼中的錯誤。 – 2011-04-17 09:45:51

+0

回溯(最近通話最後一個): 文件 「warning.py」,3號線,在 類LabelDemo(幀): 文件 「warning.py」,14號線在LabelDemo LabelDemo()主循環() NameError:名稱'LabelDemo'未定義 – Sahar 2011-04-17 09:53:55

回答

2

該代碼也適用於我。某處必須有縮進錯誤。那是整個文件嗎?你有沒有在任何地方與空間混合的標籤?

編輯:

這是您的回溯:

Traceback (most recent call last): 
    File "warning.py", line 3, in <module> class LabelDemo(Frame): 
    File "warning.py", line 14, in LabelDemo LabelDemo().mainloop() 

    NameError: name 'LabelDemo' is not defined 

這是說,調用LabelDemo().mainloop()LabelDemo(Frame)類定義中發生的事情。這意味着你已經縮進了if __name__ == "__main__"。刪除if __name__ ..行周圍的縮進,它應該工作正常。

最後編輯:

有一個編輯到格式化的代碼,大概是因爲OP不知道怎麼做的問題。但在編輯中,縮進將在之前被破解的地方進行修復。

+0

好吧,我現在已經做了如果__name__ ==「__main__」:if __name__ ==「__main_」: – Sahar 2011-04-17 10:28:59

+0

,它現在沒有給出任何錯誤,但沒有輸出 – Sahar 2011-04-17 10:29:18

+0

@Sahar,縮進意味着空白。空格或製表符。刪除'if __name__ ..'行之前的所有空格和製表符,所以它的格式與編輯後自問題中的代碼一樣。 'if'應該在您的文本編輯器的左邊,列號爲1. – 2011-04-17 10:33:03