メソッドget_pos
は、ユーザーがエントリに入力したものを取得することになっています。いつ get_pos
が実行されると、次のように返されます。
TypeError:アンバインドメソッドget_pos()は、最初の引数としてアプリインスタンスを使用して呼び出す必要があります(代わりに何も取得しません)
コード:
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
このエラーを報告しました:
TypeError:アンバインドメソッドget_pos()は、最初の引数としてアプリインスタンスを使用して呼び出す必要があります(代わりに何も取得しません)
素人の言葉でこれが意味することは、あなたがこのようなことをしているということです:
class app(object):
def get_pos(self):
...
...
app.get_pos()
代わりにあなたがする必要があるのは次のようなものです:
the_app = app() # create instance of class 'app'
the_app.get_pos() # call get_pos on the instance
エラーの原因となっている実際のコードを示さなかったため、これより具体的に取得することは困難です。
クラスのインスタンスを作成するときにクラス名に括弧を追加するのを忘れると、このエラーに遭遇しました:
from my.package import MyClass
# wrong
instance = MyClass
instance.someMethod() # tries to call MyClass.someMethod()
# right
instance = MyClass()
instance.someMethod()
私の水晶玉は、インスタンスapp.get_pos
を作成する代わりに、クラスapp
(実際にはApp
と呼ばれる)を使用してapp_instance = app
をボタンにバインドしていることを教えてくれます。 app_instance.get_pos
を使用します。
もちろん、他の人が指摘したように、投稿したコードには他にも多くの問題があるため、投稿していないコードの誤りを推測するのは少し難しいです。