2017-03-06 91 views
1

我需要帮助,使这个简单的Tkinter程序在Ubuntu 3.54上运行在Ubuntu 16.04.1上。Python Tkinter Tk没有定义

下面的代码:

from tkinter import * 

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

root.mainloop() 

为-的代码是给了我这个错误:

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未安装。 我在更新我的软件包,保存我的文件并使用python3 tkinter.py运行我的程序之前,同时安装了python-tkpython3-tk软件包。

注:重命名我的文件到一个奇怪的错误比tkinter.py结果以外的东西:

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' 
  • 进口的名字是错的。 使用tkinter以小写字母给我Tk() not defined错误,指示导入名称是正确的,但名称Tk不是。 使用它与大写T给我一个no module named Tkinter错误。 使用tkinter.Tk()会导致tkinter is not defined错误。 Installing tkinter on ubuntu 14.04

  • 代码,或Tk()实例化,或类似名称的情况下,是错误的。 打字

    • 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

    这里有什么问题?

    回答

    6

    您似乎已命名文件tkinter.py。您无法为您正在导入的模块命名文件。 Python将尝试从您现有的文件中导入,而不是从模块中导入tkinter模块。将会有模块名称collison。在您的文件中没有定义Tk(),它会生成NameError

    但是,当您重命名该文件时,“坏幻数”可能是由于.pyc文件(从.py文件编译)可能导致此类错误。 搜索并删除这些文件并重新运行。它应该解决问题。

    +0

    我将文件重命名为mytkinter.py,并删除.pyc文件,它终于奏效!非常感谢,尽管这可能比屁股疼痛少得多。 –

    0

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

    File "mytkinter.py" 
    
    +0

    这已经在我接受的答案中提到过:“你不能用你正在导入的模块命名文件。”你能解释为什么部分名称不起作用吗?似乎搜索文件名中的字符串比文件名更麻烦。 –

    相关问题