Question

While trying to initialize a StringVar() using TkInter I am getting this huge error back. So the error is as follows:

In [160]: from Tkinter import *

In [161]: p = StringVar()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-161-3e21f17f6e4f> in <module>()
----> 1 p = StringVar()

C:\Python27\lib\lib-tk\Tkinter.pyc in __init__(self, master, value, name)
    285         then the existing value is retained.
    286         """
--> 287         Variable.__init__(self, master, value, name)
    288
    289     def get(self):

C:\Python27\lib\lib-tk\Tkinter.pyc in __init__(self, master, value, name)
    216             master = _default_root
    217         self._master = master
--> 218         self._tk = master.tk
    219         if name:
    220             self._name = name

AttributeError: 'NoneType' object has no attribute 'tk'

In [162]:

Not entirely sure what is going wrong here. I am using A

Windows 7 system,

Python(x,y) version 2.7.5.2

Python 2.7.5

Within the Tkinter.py file:

__version__ = "$Revision: 81008 $" 

TkVersion = 8.5

If anyone has any clue as to what is going on, then it will be greatly appreciated ...

Was it helpful?

Solution

You need to create an instance of Tkinter.Tk before you create one of Tkinter.StringVar:

root = Tk()  # You must do this first
p = StringVar()

Below is a demonstration:

>>> from Tkinter import *
>>>
>>> p = StringVar()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 287, in __init__
    Variable.__init__(self, master, value, name)
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 218, in __init__
    self._tk = master.tk
AttributeError: 'NoneType' object has no attribute 'tk'
>>>
>>> root = Tk()
>>> p = StringVar()
>>>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top