首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未定义Python Tkinter Tk

未定义Python Tkinter Tk
EN

Stack Overflow用户
提问于 2017-03-06 02:14:40
回答 3查看 5.2K关注 0票数 1

我需要帮助使这个简单的Tkinter程序在Ubuntu16.04.1上使用Python3.5.2。

下面是代码:

代码语言:javascript
运行
复制
from tkinter import *

root = Tk()
mylabel = Label(root, text="Test")
mylabel.pack()

root.mainloop()

代码原样给了我这个错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "tkinter.py", line 8, in <module>
    from tkinter import *
  File "/home/dylan/Documents/proj/python/tkinter.py", line 10, in <module>
    root = Tk()
NameError: name 'Tk' is not defined

我注意到浏览其他问题时发现,在制作Tkinter程序时,有一些流行的东西可能出错。

  1. Tkinter没有安装。在更新包、保存文件和使用python-tk运行程序之前,我都安装了python3-tkpython3-tk软件包。

注意:将我的文件重命名为tkinter.py以外的东西会导致一个奇怪的错误:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "mytkinter.py", line 8, in <module>
    from tkinter import *
ImportError: bad magic number in 'tkinter': b'\x03\xf3\r\n'
  1. 导入名是错误的。使用小写的tkinter会给出Tk() not defined错误,表明导入名是正确的,但Tk名称不正确。将它与大写T一起使用会给我一个no module named Tkinter错误。使用tkinter.Tk()会导致tkinter is not defined错误。Installing tkinter on ubuntu 14.04
  2. 代码中的情况,或者Tk()__的实例化,或类似的名称,都是错误的。打字
代码语言:javascript
运行
复制
- `root = tk()`
- `root = Tk()`
- `root = tkinter()`
- `root = Tkinter()`
- `root = tkinter.tk()`
- `root = tkinter.Tk()`
- `root = Tkinter.tk()`
- `root = Tkinter.Tk()`
- `root = tk.Tk()`
- `root = Tk.Tk()`

结果均为NameErrors。Programming in Python: Getting "name 'Tk' is not defined" only at Command Prompt, works in IDLE

另外要注意的是:命令python3 -m idlelib.idle (如下面的问题所示)也会导致Tk not defined错误。'Tk' is not defined

这里有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-06 02:40:10

您似乎已经将文件命名为tkinter.py。您不能用要导入的模块命名文件。Python将尝试从现有文件中导入,而不是从tkinter模块导入。将有模块名科里森。在生成Tk()的文件中没有定义这样的NameError。

但是,当您重命名该文件时,“坏魔术号”可能是由于.pyc文件(从.py文件编译)造成的,而这些文件可能会导致这样的错误。搜索并删除这些文件并重新运行。它应该解决这些问题。

票数 9
EN

Stack Overflow用户

发布于 2017-08-25 00:36:33

不要用模块的名称命名任何脚本,甚至部分名称。你的线索就在这里

代码语言:javascript
运行
复制
File "mytkinter.py"
票数 0
EN

Stack Overflow用户

发布于 2020-05-18 19:05:59

如果您在空闲时使用root = Tk(),那么它将运行,但是,如果您想在另一个IDE中使用此代码,则必须使用root = tkinter.Tk(),这可能会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42616501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档