2015-08-28 3 views
0

Я попытался работать с библиотекой Tkinter, однако я продолжаю получать это сообщение, и я не знаю, как его решить .. Я просмотрел сеть, но ничего не нашел для этой конкретной ошибки - я называть библиотеку так:Ошибка Python 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' 
+0

Вы используете PortablePython? –

+0

@PadraicCunningham Да, я – ErezProductions

+0

добавьте ссылку на то, что находится в '' C: \ Heights \ PortableApps \ PortablePython2.7.6.1 \ App \ lib \ lib- tk \ Tkinter.py', это выглядит неправильно для меня –

ответ

2

Вы импортировали (в основном) все, начиная от модуля и заканчивая from Tkinter import *. Это означает, что (в основном) все в этом модуле теперь включено в глобальное пространство имен, и вам больше не нужно включать имя модуля, когда вы ссылаетесь на вещи из него. Таким образом, обратитесь к объекту TkinterTclError как просто TclError вместо Tkinter.TclError.

+0

Я знаю, что, однако, я не упоминаю об этом даже в моем коде. Я просто создал некоторые графические интерфейсы, и я получаю эту ошибку. – ErezProductions

+0

Возможно, вы должны включить полный трассировочный запрос в свой вопрос. – TigerhawkT3

+0

я. вы можете посмотреть на это – ErezProductions

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 * импортирует свойства в пространство имен, а не сам модуль.

Либо попробовать первый способ, приведенные выше, или корректировать свой подход (NB: importing all properties is a bad idea) как так:

>>> from tkinter import * 
>>> my_TclError = TclError # renamed because TclError defined in tkinter 
>>> 
+0

Нет, я все еще получаю трассировку, которую я дал в вопросе (посмотрите еще раз, я добавил дополнительную информацию) – ErezProductions

1

Как @ErezProductions сказал. Вам либо нужно импортировать все, либо получить доступ к нему напрямую, либо импортировать только модуль.

from Tkinter import * 
TclError 

или

import Tkinter 
Tkinter.TclError 
+0

Нет, я все еще получаю трассировку, которую я дал в вопросе (посмотрите еще раз, я добавил более подробную информацию) – ErezProductions

0

Проблема, кажется, в "C:\Heights\PortableApps\PortablePython2.7.6.1\App\lib\lib-tk\Tkinter.py:

Регулярное питон установить импорт в lib-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 

Тогда где Tkinter используется в PortablePython 0 Вместо этого используется. Похоже на ошибку в PortablePython.

Полное содержание файла: here. Замена файла в C:\Heights\PortableApps\PortablePython2.7.6.1\App\lib\lib-tk\Tkinter.py в соответствии с комментариями устраняет проблему.

Смежные вопросы