NameError:名称“Tk”未定义

Posted

技术标签:

【中文标题】NameError:名称“Tk”未定义【英文标题】:NameError: name 'Tk' is not defined 【发布时间】:2014-09-15 09:36:49 【问题描述】:

我第一次尝试在我的计算机上使用 Tkinter,我在标题中收到错误,“NameError: name 'Tk' is not defined”,引用“line root = Tk()”。我无法让 Tkinter 以任何形式工作。我目前在使用 python 2.7.5 的 macbook pro 上。我已尝试多次重新下载 python,但仍然无法正常工作。 任何人都知道为什么它不起作用?需要我提供更多信息吗?

提前致谢

#!/usr/bin/python

from Tkinter import *
root = Tk()
canvas = Canvas(root, width=300, height=200)
canvas.pack()
canvas.create_rectangle(  0,   0, 150, 150, fill="yellow")
canvas.create_rectangle(100,  50, 250, 100, fill="orange", width=5)
canvas.create_rectangle( 50, 100, 150, 200, fill="green", outline="red", width=3)
canvas.create_rectangle(125,  25, 175, 190, fill="purple", width=0)
root.mainloop()

【问题讨论】:

遇到错误时最好添加回溯 你能解释一下你的意思吗? 如果遇到错误,最好在提问时添加错误回溯,在这种情况下,答案很简单,您已将 .py 文件命名为与您的模块相同正在尝试导入,但通常完整的回溯是找出问题所在的最佳线索。 拍摄。将其命名为 Tkinter.py 的愚蠢错误 -_- 有什么方法可以让 Tkinter.py 回到我想要的实际功能? 只需将您的 Tkinter.py 重命名为其他名称,可能类似于 MyTk.py 之类的名称,始终尽量避免使用内置方法等作为变量名称,并为您的 .py 文件使用隐藏模块名称的名称 【参考方案1】:

你有一些其他的模块取名为“Tkinter”,隐藏了你真正想要的那个。重命名或删除它。

import Tkinter
print Tkinter.__file__

【讨论】:

我进入了你的程序,它打印出 /Users/myuser/Tkinter.py /Users/myuser/Tkinter.py 然后我再次输入它,它打印出 /Users/myuser/Tkinter。 pyc /Users/myuser/Tkinter.pyc 现在它正在返回:/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.pyc 在 OP 中使用我的代码制作程序仍然返回一个错误,这次滞后到我必须手动关闭它的地步,它打印出这个:文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ lib-tk/Tkinter.py",第 1068 行,在 mainloop self.tk.mainloop(n) 那是正确的路径,所以现在你遇到了一个完全不同的问题。 是否值得尝试卸载python并重新安装? 呃,不。但是可能值得编写一个最小的 Tkinter 程序来看看你是否可以让它工作。【参考方案2】:

您的代码是正确的,但导入代码中的缩进错误,不要使用一个空格,而是使用两个空格并尽量不要键入此命令:

import tkinter

使用此代码:

from tkinter import  *
root = Tk()
canvas = Canvas(root, width=300, height=200)
canvas.pack()
canvas.create_rectangle(  0,   0, 150, 150, fill="yellow")
canvas.create_rectangle(100,  50, 250, 100, fill="orange", width=5)
canvas.create_rectangle( 50, 100, 150, 200, fill="green", outline="red", width=3)
canvas.create_rectangle(125,  25, 175, 190, fill="purple", width=0)
root.mainloop()

问题也可能是输入“Tkinter”,所以输入“tkinter”作为python区分大小写,我认为这应该可以,它对我有用

【讨论】:

【参考方案3】:

请确保您的 Python 文件名不是“tkinter.py”,否则会显示此错误。

【讨论】:

以上是关于NameError:名称“Tk”未定义的主要内容,如果未能解决你的问题,请参考以下文章

NameError:名称'unicode'未定义[重复]

NameError:名称'python'未定义[关闭]

NameError:名称“”未定义[关闭]

Buildozer:NameError:未定义名称'functools'

NameError:未定义全局名称“reduce”

NameError:未定义名称“convertToBinaryData”