この記事は旧ブログから移転した記事です。
やろうとしたこと
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があります。今回はこのエラーの原因と解決方法を解説...