2017-09-02 102 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个函数 –