2012-01-06 3 views
6
(версия Python: 3.1.1)

Python Tkinter STRINGVAR() ошибка инициализации

Я имею странную проблему с STRINGVAR в Tkinter. При попытке постоянно обновлять виджет Message в проекте, я продолжал получать ошибку при попытке создать переменную. Я выскочил на интерактивную оболочку Python, чтобы исследовать и это то, что я получил:

>>> StringVar 
<class 'tkinter.StringVar'> 
>>> StringVar() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python31\lib\tkinter\__init__.py", line 243, in __init__ 
    Variable.__init__(self, master, value, name) 
    File "C:\Python31\lib\tkinter\__init__.py", line 174, in __init__ 
    self._tk = master.tk 
AttributeError: 'NoneType' object has no attribute 'tk' 
>>> 

Есть идеи? Каждый пример, я видел на Tkinter использования показывает инициализацией переменной с чем отправленное конструктору, так что я в недоумении, если я что-то не хватает ...

ответ

10

STRINGVAR нужен хозяин:

>>> StringVar(Tk()) 
<Tkinter.StringVar instance at 0x0000000004435208> 
>>> 

или больше обычно:

>>> root = Tk() 
>>> StringVar() 
<Tkinter.StringVar instance at 0x0000000004435508> 

При создании экземпляра Tk создается новый интерпретатор. До этого ничего не работает:

>>> from Tkinter import * 
>>> StringVar() 
Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "C:\Python26\lib\lib-tk\Tkinter.py", line 251, in __init__ 
    Variable.__init__(self, master, value, name) 
    File "C:\Python26\lib\lib-tk\Tkinter.py", line 182, in __init__ 
    self._tk = master.tk 
AttributeError: 'NoneType' object has no attribute 'tk' 
>>> root = Tk() 
>>> StringVar() 
<Tkinter.StringVar instance at 0x00000000044C4408> 

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

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