【Tkinter】バインドされた関数の呼び出し時は引数にselfを与える TypeError: click() takes 0 positional arguments but 1 was givenの対処法

この記事は旧ブログから移転した記事です。

やろうとしたこと

PythonのTkinterでエントリー*1に入力した文字をプログラムに読み込ませるときに、エンターを押して実行できるようにしたかった。

*1 エントリー
Tkinterにおける文字の入力欄のこと

問題のコード(該当箇所のみ)

def click():
     #ボタンを押したときの処理

entry.bind('<Return>', click)

一番下の行でエンターキーの入力を押したのを感知し、感知したら関数click()を実行する、というコードです。

出たエラー

TypeError: click() takes 0 positional arguments but 1 was given

click()関数は0個の引数をとるはずだけど1個の引数が与えられたよ、というエラーです

解決策

関数click()の引数にselfを与えてあげる。

def click(self):
     #ボタンを押したときの処理

entry.bind('<Return>', click)

以上、関数中でバインドされた関数を呼び出すときはselfをつける、というお話でした。

参考にした記事

【Python】TypeError: 関数名 takes 0 positional arguments but 1 was givenの原因と解決方法 | OFFICE54
Pythonでプログラムを作成していると必ず一度は遭遇するエラーの1つにTypeError: 関数名 takes 0 positional arguments but 1 was givenがあります。今回はこのエラーの原因と解決方法を解説...