質問: tk.Button(frame[0],text="表示",command=lambda : print("put"))#ボタン確認 button.pack(side=tk.LEFT) button.bind("<1>",return_entry(event,combo[0],entry))#実際に動作したい内容 root.mainloop() ### 試したこと ラムダ関数でボタンの中に処理を記載すると、ボタンを押した際に動作することを確認しました。 一方で、.bindでボタンを指定してもshift+enterで実行した瞬間だけ処理が行われているように見えます。 ### 補足情報(FW/ツールのバージョンなど) jupyter notebook 5.0.0を使用しています。
回答: bindメソッドの第二引数は関数(コールバック関数)で、それがイベント発生時にtkinterから起動されるという仕組みです。 この説明にあるように第二引数funcは「発生したイベントを引数にとる関数」でなければなりませんので、 ×:`button.bind("<1>", return_entry(event,combo[0],entry))` 〇:`button.bind("<1>", labmda event: return_entry(event,combo[0],entry))` とすべきだろうと思います。×の方を実行するとbind時の引数の計算の際にreturn_entryが実行されてしまい、その結果がbindに渡されてしまいます。質問者さんがおっしゃるとおりの動き(期待でない動き)ですね。