Access from one class to methode of other class
Kent Johnson
kent37 at tds.net
Thu May 26 16:37:28 EDT 2005
VK wrote:
>> On Thu, 26 May 2005 14:33:45 +0200, VK <"myname"@example.invalid>
>> declaimed the following in comp.lang.python:
>>
>>
>>> Hi, all!
>>>
>>> In my programm i have to insert a variable from class 2 to class 1
>>> and I get error NameError: global name 'd' is not defined. How do I
>>> get access to d.entry.insert() method of class 1
>
> from Tkinter import *
>
> class First:
> def __init__(self):
> self.root = Tk() # create window contents as children to
> root..
> self.entryframe = Frame(self.root)
> self.entryframe.pack(fill=BOTH,expand=1)
>
> self.entry = Entry(self.entryframe)
> self.entry.pack(side=TOP,expand=1,fill=BOTH)
> self.entry.focus()
> self.entry.bind('<Return>',(lambda event: self.fetch())) #
> on enter key
>
> self.button =
> Button(self.entryframe,text="Call",command=self.getvar)
> self.button.pack(side=LEFT,expand=YES,fill=BOTH)
>
> self.root.mainloop()
>
> def fetch(self):
> print 'Input => "%s"' % self.entry.get() # get text form entry
>
> def getvar(self,event=0):
> c=Second(self,self.root)
>
>
>
> class Second:
> def __init__(self,parent,s="thing"):
> self.root = Tk()
> self.ent = Entry(self.root)
> self.ent.pack()
> self.btn = Button(self.root,text='Fetch',command=self.fetch)
> self.btn.pack(side=RIGHT)
> def fetch(self):
> text = self.ent.get() # get text form entry in this window
> d.entry.insert(0, text)# must insert in other window
>
> d = First() #First window
The problem is that First.__init__() never returns so the instance of First is never bound to d.
Take the line
self.root.mainloop()
out of First.__init__() and and the line
d.root.mainloop()
at the end of the program and it will work as you expect.
Kent
More information about the Python-list
mailing list