2017-03-06 124 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

    這已經在我接受的答案中提到過:「你不能用你正在導入的模塊命名文件。」你能解釋爲什麼部分名稱不起作用嗎?似乎搜索文件名中的字符串比文件名更麻煩。 –

    相關問題