【问题标题】:ImportError: cannot import name 'Tk'ImportError:无法导入名称“Tk”
【发布时间】:2015-01-25 17:21:03
【问题描述】:

我正在 ubuntu 上用 python 编写一个程序,但是这几天我遇到了这个非常恼人的问题,

Traceback (most recent call last):
  File "/home/tansen/Documents/python2/button25_01JanV1.py", line 1, in <module>
    import Tkinter,ttk
  File "/home/tansen/Documents/python2/Tkinter.py", line 1, in <module>
    from Tkinter import Tk, Label, Button
ImportError: cannot import name 'Tk'

之前这个程序运行正常,我运行了几次程序成功

import tkinter.ttk 
from tkinter import *


def viewFile():

    pass

if __name__ == '__main__':

    root = Tk()


    step = LabelFrame(root,text="FILE MANAGER", font = "Arial 20 bold   italic")
    step.grid(row=1, columnspan=7, sticky='W',padx=100, pady=5, ipadx=130, ipady=25)

    Button(step,    text="OpenFile",    font = "Arial 8 bold    italic",    activebackground="turquoise",   width=30, height=5, command=viewFile).grid      (row= 6, column =3)
    Button(step,    text="Exit",        font = "Arial 8 bold    italic",    activebackground="turquoise",   width=20, height=5, command=root.quit).grid     (row= 6, column =5)

    tex = Text(master=root)                                                                 # TextBox For Displaying File Information
    scr=Scrollbar(root,orient =VERTICAL,command=tex.yview)
    scr.grid(row=8, column=2, rowspan=15, columnspan=1, sticky=NS)
    tex.grid(row=8, column=1, sticky=E)
    tex.config(yscrollcommand=scr.set,font=('Arial', 8, 'bold', 'italic'))

    root.mainloop()

根据专家的建议,我将文件重命名为 Tkinter.py 并将大写字母从“T”更改为“t”。之后我的程序运行成功,但又产生了另一个问题。按退出按钮不起作用。

请您帮忙成功解决这个问题。

【问题讨论】:

  • 在Py3中是tkinter(带有小号t
  • 之后我收到此错误 ImportError: No module named 'ttk'
  • 我不知道 py2 和 py3 有什么不同?我在想它只是一个升级版本
  • 代替import *,你能只导入你需要的类,同时删除你所有的pyc文件吗?使用 pyclean 。在您当前的目录中(安装 pyclean 应该很容易)。我遇到了这个问题,我将一个函数或类命名为实际上是一个包导入,而我的一个旧 pyc 文件在我导入它时一直覆盖该变量名

标签: python ubuntu python-3.x tkinter tk


【解决方案1】:

你在同一目录中调用了一个文件Tkinter.py,重命名它并删除.pyc

/home/tansen/Documents/python2/Tkinter.py <- importing from this not the module

您还使用 python 2 的 Tkinter 的导入语法,使用:

from tkinter import ttk, Text, Button, LabelFrame, VERTICAL, E, NS, Scrollbar, Tk

【讨论】:

  • @PadraicCunningham 从文件夹中删除 Tkinter.py 后,它显示此 Traceback(最近一次调用最后一次):文件“/home/tansen/Documents/python2/button25_01JanV1.py”,第 1 行,在 import tkinter,ttk ImportError: No module named 'ttk'
  • 现在我用的是python3,在此之前我认为是Python 2.7.....我知道吗,请问它们有什么区别
  • @PadraicCunningham 现在,它正在运行程序,但我的退出按钮无法正常工作
  • 您应该按照我的建议重命名 Tkinter.py 并删除 Tkinter.pyc ,但这与现在发生的事情无关。在 ipython 或某个 ide 中使用我的答案中的导入运行您的代码。你的代码对我来说很好,所以代码不是问题。
  • 也不要编辑您的问题并更改内容,如果您有新问题,请提出新问题
【解决方案2】:

确保您要导入的文件与您的程序位于同一文件夹中。然后,删除 pycache 文件夹(或在 Ubuntu 上调用的任何文件夹,我使用的是 Windows。它将是一个“已编译的 Python 文件”)。这可能已损坏并阻止您的程序正常工作。如果这不起作用,那么恐怕我没有想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-31
    • 2014-10-10
    • 2014-09-20
    • 2014-08-28
    • 2014-06-10
    • 2016-05-16
    • 2019-05-25
    • 2017-04-22
    相关资源
    最近更新 更多