使用Python编程:仅在命令提示符处获取“名称'Tk'未定义”,适用于IDLE

问题描述 投票:3回答:9

刚从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”,它根本找不到该模块。

显然这个程序适用于其他人的计算机,所以这不是代码本身的问题。有谁知道可能导致这个问题的原因是什么?

python tkinter python-idle
9个回答
4
投票

在我的电脑上正常工作。

既然你说:NameError:名字'tk'没有定义。

这里带小't'

你可能写过

root = tk()

代替 :

root = Tk()

检查资本'T'


3
投票

我想这与此有关

  1. python版本正在使用
  2. 你是如何基本上导入库的

对于python 2.x使用此

from Tkinter import *

root = Tk()

root.mainloop()

要么

from tkinter import *

root = tkinter()

root = mainloop()

1
投票

Python分布在不同的构建中,其中一些包括Tkinter而另一些则没有。

您所描述的是在您的系统上拥有多个Python的症状。当你运行IDLE时,显然你正在运行一个安装了Tkinter的程序。命令行中可用的那个显然没有。确认这一点的一种方法是尝试从命令行启动IDLE:python -m idlelib.idle。如果IDLE未启动,则不会安装Tkinter,您需要找到成功运行IDLE的版本的路径。


1
投票

我遇到了同样的问题,在我改变这个问题之前找不到任何解决方案:

from Tkinter import *

至:

from tkinter import *

我不知道大写T适用于其他,但在Windows 64位Python 3.4.1下,它应该是“tkinter”


0
投票

对于Python 2.x使用:

from Tkinter import * as tk
import Tkinter as tk
root = Tk()

对于Python 3使用:

from tkinter import * as tk
import tkinter as tk
root = tk.Tk()

0
投票

如果您之前创建了tkinter.py,请检查您的文件名,然后它也会导致同样的问题。它会先导入


-1
投票

认为这将有助于“tk未定义”

from tkinter import *
import tkinter.tkFileDialog
root = tkinter.Tk('Anything you want is displayed')

-1
投票

这适用于Python 3:

from Tkinter import *
import Tkinter as tk

window = tk.Tk()
window.title("Welcome to LikeGeeks app")
window.mainloop()

-2
投票

来自tkinter进口*

root = Tk()

使用小写t导入并在TK中使用大写T.

这对我有用

© www.soinside.com 2019 - 2024. All rights reserved.