2012-01-06 102 views
6

(Python版本:3.1.1)初始化Python tkinter StringVar()错误

我在tkinter中的StringVar存在一个奇怪的问题。在试图持续保持项目中消息小部件更新的同时,在尝试创建变量时,我一直收到错误。我跳出一个交互式python shell进行调查,这是我得到的:

>>> 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> 

与您发现该例子的问题是,可能在文献中,他们显示,应该是一个类的内部或在较长的计划只有部分片段,使进口和其他代码是没有明确指出。