ホームページ >バックエンド開発 >Python チュートリアル >Tkinter ボタンがクリック時ではなく作成時にコマンドを実行するのはなぜですか?
作成時のボタン コマンドの実行
Tkinter では、Button インスタンスがコマンド パラメーターで初期化されるとき、関連付けられた関数は次のようになります。ボタンをクリックすると実行されます。ただし、場合によっては、予期した動作に反して、ボタンの作成直後にコマンドが実行されることがあります。
コード例の分析
次のコードを考えてみましょう。
from Tkinter import * admin = Tk() def button(an): print(an) print('het') b = Button(admin, text='as', command=button('hey')) b.pack() mainloop()
問題の説明
次の場合このコードを実行すると、ボタンが正しく機能しないようです。クリックされたときにボタン関数を実行する代わりに、作成時にすぐに「hey」と「het」を出力します。
説明
問題はコマンドの実行方法にあります。パラメータは初期化中です。行:
command=button('hey')
は、button('hey') 関数呼び出しの結果をコマンド パラメーターに渡しています。これは次と同等です。
result = button('hey') command=result
button('hey') 関数はすぐに実行され、結果を返すため、コマンドは関数参照自体ではなく結果に設定されます。その結果、関数はボタンをクリックしたときではなく、すぐに実行されます。
解決策
この問題を解決するには、ボタンへの参照を渡す必要があります。関数を実行せずに実行します。これを行うには、コマンド パラメータを初期化するときにかっこを省略します。
command=button
補足
以上がTkinter ボタンがクリック時ではなく作成時にコマンドを実行するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。