Access from one class to methode of other class

V

VK

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

class 1:
self.entry = Entry(self.entryframe)
self.entry.pack()

self.button = Button(command = self.callclass2window)

def callclass2window
c = 2()


class 2:
def ins(self)
d.entry.insert(variable)


d = 1()
 
R

reidarok

I don't know if your're actually calling the classes '1' and '2', but
that's a really bad idea!
class 2:
def ins(self)
d.entry.insert(variable)

This is probably where you're getting the NameError. d is not defined,
so calling d.entry will generate an error.

Reidar
 
V

VK

I don't know if your're actually calling the classes '1' and '2', but
that's a really bad idea!




This is probably where you're getting the NameError. d is not defined,
so calling d.entry will generate an error.

Reidar

What is d = 1() in my example then? And how do I solve this problem?
ч
 
B

bruno modulix

VK said:
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.

Looking at your code snippet, I think you have a lot of other errors
before.
class 1:
self.entry = Entry(self.entryframe)
NameError : self is not defined

etc...
 
D

Dennis Lee Bieber

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

class 1:
<shudder> Does Python even allow numeric class names?

REAL code, stripped to the minimum that duplicates your problem,
is always better than pseudo-code...
self.entry = Entry(self.entryframe)
self.entry.pack()

self.button = Button(command = self.callclass2window)

def callclass2window
c = 2()


class 2:
def ins(self)
NO : ???
d.entry.insert(variable)


d = 1()

What, might I ask, does .insert() /do/ for an Entry() object?

As far as I can tell, "class 1" is creating some GUI button.
Pressing that button invokes your callclass2window(), which creates a
new "class 2" instance, and then throws it away.

Give us code that we can /run/ and we might be able to give you
an answer...
--
 
V

VK

VK said:
Looking at your code snippet, I think you have a lot of other errors
before.



NameError : self is not defined

etc...

That is not real code, only dummy describing the problem
 
V

VK

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

class 1:

<shudder> Does Python even allow numeric class names?[/QUOTE]

:-D don't know
REAL code, stripped to the minimum that duplicates your problem,
is always better than pseudo-code...

I thought that is it...
NO : ???




What, might I ask, does .insert() /do/ for an Entry() object?

That insert text into entry object.
As far as I can tell, "class 1" is creating some GUI button.
Pressing that button invokes your callclass2window(), which creates a
new "class 2" instance, and then throws it away.

Yes, exactly
Give us code that we can /run/ and we might be able to give you
an answer...

I try:

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
 
S

Simon Brunning

That is not real code, only dummy describing the problem

We realise that. The problem is that there are problems in your dummy
in addition to the real problems, and we can't tell them apart.
 
K

Kent Johnson

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
 
V

VK

Kent said:
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

O, God! It works! Thousend of thanks!

By the way, the second window appears not activ, is there an option to
make it activ on start?

Reg,VK
 
A

Aaron Bingham

Dennis Lee Bieber said:
<shudder> Does Python even allow numeric class names?

Fortunately, no:
File "<stdin>", line 1
class 1:
^
SyntaxError: invalid syntax

--
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,438
Messages
2,571,699
Members
48,796
Latest member
Greg L.
Top