[Tkinter-discuss] Get value instead of PY_VAR

Kevin Walzer kw at codebykevin.com
Thu Nov 14 17:03:20 CET 2013


I'm going around in circles trying to serialize some app configuration 
data in my Tkinter app via pickle, and I'd appreciate some help.

I set various app configurations via checkboxes and StringVar(). 
Sometimes the value of one of the checkboxes is lost and when I try to 
print the value, I get PY_VAR#2 instead. Here's a relevant snippet 
setting the values:

         self.copytext= StringVar()
         self.copytext.set(self.defaults['copytext'])

        self.whoischeck = Tile.Checkbutton(self.whoisframe, 
variable=self.whois, text='Display Raw Whois Output')

And here's the snippet that retrieves the value:

     self.defaults['copytext'] = self.copytext

Using this call, printing the value of self.defaults['copytext'] results 
in PY_VAR#2, which doesn't actually retain the value of the var I'm 
setting (1 or 0). It also results in a error when I try to serialize the 
data, because pickle can't handle this type of data:

  Can't pickle 'tkapp' object: <tkapp object at 0x01FCB090>

I can actually get the correct value if I change one call as follows:

self.defaults['copytext'] = self.copytext.get()

But then, trying to pickle this value, I get this error:

'str' object has no attribute 'get'

What's the right way in Tkinter to get the value of a StringVar() from a 
checkbutton, and then serialize the value via pickle?

Sometimes I can get this to work, but I don't understand the underlying 
dynamics of it; the intersection of Python objects and Tcl variables 
gives me headaches. I am especially unclear why I get PY_VAR rather than 
the value in some instances, but not others.

Thanks,
Kevin

-- 
Kevin Walzer
Code by Kevin/Mobile Code by Kevin
http://www.codebykevin.com
http://www.wtmobilesoftware.com


More information about the Tkinter-discuss mailing list