Reputation: 4383
The method get_pos
is supposed to grab what the user inputs in the entry. When get_pos
is executed, it returns with:
TypeError: unbound method get_pos() must be called with app instance as first argument (got nothing instead)
Code:
class app(object):
def __init__(self,root):
self.functionframe=FunctionFrame(root, self)
self.functionframe.pack(side=BOTTOM)
def get_pos(self):
self.functionframe.input(self)
class FunctionFrame(Frame):
def __init__(self,master,parent):
Frame.__init__(self,master,bg="grey90")
self.entry = Entry(self,width=15)
self.entry.pack
def input(self):
self.input = self.entry.get()
return self.input
Upvotes: 19
Views: 68150
Reputation: 385900
You reported this error:
TypeError: unbound method get_pos() must be called with app instance as first argument (got nothing instead)
What this means in layman's terms is you're doing something like this:
class app(object):
def get_pos(self):
...
...
app.get_pos()
What you need to do instead is something like this:
the_app = app() # create instance of class 'app'
the_app.get_pos() # call get_pos on the instance
It's hard to get any more specific than this because you didn't show us the actual code that is causing the errors.
Upvotes: 47
Reputation: 161
I've run into this error when forgetting to add parentheses to the class name when constructing an instance of the class:
from my.package import MyClass
# wrong
instance = MyClass
instance.someMethod() # tries to call MyClass.someMethod()
# right
instance = MyClass()
instance.someMethod()
Upvotes: 16
Reputation: 95652
My crystal ball tells me that you are binding app.get_pos
to a button using the class app
(which really should be called App
) instead of creating an instance app_instance = app
and using app_instance.get_pos
.
Of course as others have pointed out there are so many other issues with the code you did post it is a bit hard to guess at the mistakes in the code you didn't post.
Upvotes: 3