f



_tkinter.TclError: can't set "PY_VAR0": invalid command name "-1210125972check"

Hi,

I searched the web and docs but cannot figure out whats wrong with this 
code:

#!/usr/bin/python

import Tkinter as Tk

class testtk(Tk.Frame):

   def __init__(self):
     self.root = Tk.Tk()
     Tk.Frame.__init__(self,self.root)
     self.frame = Tk.Frame(self.root)
     self.var = Tk.StringVar()
     self.var.trace_variable('w',self.check)
     Tk.Entry(self.frame, textvariable = self.var).pack()
     self.frame.pack()
     Tk.mainloop()

   def check():
     pass

if __name__ == "__main__":
   t = testtk()
   t.var.set("TEST")

Result:

Traceback (most recent call last):
   File "<stdin>", line 22, in ?
   File "/usr/lib/python2.3/lib-tk/Tkinter.py", line 191, in set
     return self._tk.globalsetvar(self._name, value)
_tkinter.TclError: can't set "PY_VAR0": invalid command name 
"-1210125972check"


Any ideas, why I cant set the variable var?

--
Greg
0
g.horvath1 (44)
3/2/2006 3:32:54 PM
comp.lang.python 77058 articles. 6 followers. Post Follow

1 Replies
1230 Views

Similar Articles

[PageSpeed] 41

Gregor Horvath schrieb:

> if __name__ == "__main__":
>   t = testtk()
>   t.var.set("TEST")
> 
> Result:
> 
> _tkinter.TclError: can't set "PY_VAR0": invalid command name 
> "-1210125972check"
> 
> 
> Any ideas, why I cant set the variable var?

Ok. The problem is that the program enters the mainloop on t = testtk() 
and t.var.set("TEST") is executed when the program ends.

But, what I want to do is to let another program create my tkinter GUI 
via initiating my class through COM. Then the COM-Client should be able 
to set values of the tkinter variables from "the outside".

How to do this?

Do I have to make my GUI program threaded ? like described here:

http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/82965

The mainloop resides in one thread and the other thread provides the COM
object and queues the foreign COM method calls to the GUI thread?

Is there a simpler solution?

--
Greg
0
g.horvath1 (44)
3/2/2006 5:55:32 PM
Reply: