在命令提示符下编程Python时出现“name 'Tk' is not defined”,在IDLE中正常工作

7 投票
11 回答
94350 浏览
提问于 2025-04-17 07:05

这是一个刚开始学习Tkinter的初学者提的问题。我下载了Tkinter,并写了一个教程中的Hello World程序,在IDLE里运行得很好。不过,当我保存程序并通过命令提示符运行时,出现了NameError: name 'tk' is not defined.的错误。我还尝试在主Python命令程序里手动输入代码,结果也能正常运行。

只有在通过命令提示符运行或者双击时,Tk()才会识别不了。

我完全不知道这是什么情况。

代码就是所有教程教你写的基本Hello World程序:

from Tkinter import *
root = Tk()
w = Label(root, text="Hello World")
w.pack()

root.mainloop()

另外,因为我知道大家可能会问,所以我想说明一下,我不是在用3.x版本,并且我尝试过把程序叫做"tkinter",但它就是找不到这个模块。

显然这个程序在其他人的电脑上可以正常工作,所以问题不在代码本身。有没有人知道这可能是什么原因呢?

11 个回答

5

我想这可能跟以下几点有关:

  1. 你使用的Python版本
  2. 你是怎么导入这个库的

如果你使用的是 python 2.x,可以用这个:

from Tkinter import *

root = Tk()

root.mainloop()

或者

from tkinter import *

root = tkinter()

root = mainloop()
7

在我电脑上运行得很好。

因为你说了:NameError: name 'tk' is not defined。

这里的'tk'是小写的't'

你可能写成了:

root = tk()

而不是:

root = Tk()

检查一下大写的'T'

13

我找到的解决办法是,不要把你的文件命名为 tkinter。

撰写回答