0

我曾尝试使用 Tkinter 库,但是,我不断收到此消息,但我不知道如何解决它。我查看了网络,但没有发现此特定错误 - 我这样调用库:

from Tkinter import *

我得到这个错误 -

    TclError = Tkinter.TclError
    AttributeError: 'module' object has no attribute 'TclError'

我不知道我现在能做什么..谢谢

完整追溯:

Traceback (most recent call last):
File "C:/Users/Shoham/Desktop/MathSolvingProject/Solver.py", line 3, in <module>
from Tkinter import *
File "C:\Heights\PortableApps\PortablePython2.7.6.1\App\lib\lib-    tk\Tkinter.py", line 41, in <module>
TclError = Tkinter.TclError
AttributeError: 'module' object has no attribute 'TclError'
4

4 回答 4

2

您使用 . 从模块中导入(大部分)所有内容from Tkinter import *。这意味着(大部分)该模块中的所有内容现在都包含在全局命名空间中,并且当您从中引用内容时不再需要包含模块名称。因此,将Tkinter'TclError对象简单地称为TclError而不是Tkinter.TclError.

于 2015-08-28T18:39:28.753 回答
1

就像@ErezProductions 说的那样。您要么必须导入所有内容并直接访问它,要么只导入模块。

from Tkinter import *
TclError

或者

import Tkinter
Tkinter.TclError
于 2015-08-28T18:49:41.153 回答
1

问题似乎出在"C:\Heights\PortableApps\PortablePython2.7.6.1\App\lib\lib-tk\Tkinter.py

常规的 python 安装导入与 inlib-tk\Tkinter.py不同PortablePython2.7.6.1\App\lib\lib-tk\Tkinter.py

try:
    import _tkinter
except ImportError, msg:
    raise ImportError, str(msg) + ', please install the python-tk package'
tkinter = _tkinter # b/w compat for export
TclError = _tkinter.TclError

然后在 PortablePython_tkinter中使用 Tkinter 的地方改为使用。这似乎是一个错误PortablePython

文件的完整内容在这里。根据评论替换文件C:\Heights\PortableApps\PortablePython2.7.6.1\App\lib\lib-tk\Tkinter.py可以解决问题。

于 2015-08-28T19:11:10.920 回答
0

看到不同:

>>> import tkinter
>>> TclError = tkinter.TclError
>>>

没有错误。但是,用你的方法:

>>> from tkinter import *
>>> TclError = tkinter.TclError
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tkinter' is not defined

不同之处在于第一种方法将模块tkinter导入名称空间。您可以使用点表示法来处理其属性tinter.property。但是,from tkinter import *将模块的属性导入名称空间,而不是模块本身。

尝试上面给出的第一种方法,或者调整您的方法(注意:导入所有属性是一个坏主意),如下所示:

>>> from tkinter import *
>>> my_TclError = TclError   # renamed because TclError defined in tkinter
>>>
于 2015-08-28T18:46:27.223 回答