2017-09-02 104 views
-1

我正在使用Tkinter在Python 3上編寫GUI,但每次使用Entry()時,都會出現名稱錯誤。Python 3 Tkinter:NameError with Entry小部件:名稱'Entry'未定義

我試過的代碼更簡單的版本,(這是寫在下面),但它仍然引起NameError:

import tkinter 
top = tkinter.Tk() 

e = Entry(top) 
e.pack() 

top.mainloop() 

這是我的錯誤:

Traceback (most recent call last): 
    File "/home/pi/gui.py", line 4, in <module> 
    e = Entry() 
NameError: name 'Entry' is not defined 

我直到最近纔開始編碼,所以答案可能非常簡單,我沒有意識到代碼是錯誤的,但感謝任何答案。

回答

2

你沒有導入。你的代碼更改爲:

e = tkinter.Entry(top) 

或顯式導入:

from tkinter import Entry 
2

您沒有導入Entry到本地命名空間,所以你需要從模塊,你做的進口訪問:

e = tkinter.Entry(top) 
0

既然你導入Tkinter的模塊,每一個動作的Tkinter需要入手的Tkinter [函數名]。

您也可以只添加:

from tkinter import [function name] 

導入多個功能你單獨用逗號將它們。

如果你用了很多的功能,最好是進口的每個功能,與

from tkinter import * 
+0

您的術語是不太正確的。 OP沒有導入「tkinter函數」,而是導入了tkinter _module_。另外,雖然它是真的,但你可以導入函數('[函數名]')在tkinter的情況下,大多數情況下導入的是類。最後,[PEP8](https://www.python.org/dev/peps/pep-0008/)明確禁止通配符導入(例如:來自tkinter import *'),因此說「最好的用'from tkinter import *'「導入每個函數。 –

+0

@BryanOakley不,這是因爲如果你使用10個函數 –