Tkinterでボタンのcommandに引数を渡す方法を解説
Tkinterでアプリケーションを開発していると、ボタンをクリックしたときに特定のウィンドウを開いたり、何らかのイベントを実行したりしたい場面がよくあります。ボタンを完全に機能させるためには、commandオプションに関数を渡す仕組みを理解しておくことが重要です。
commandオプションとは
commandはButtonウィジェットの属性のひとつで、値として「関数名」を受け取ります。ここに指定された関数が、ボタンが押されたときに実行されるイベントの動作を定義します。
まずは基本となる例として、ウィンドウとボタンを作成し、command属性に関数を渡してイベントを発生させてみましょう。
サンプルコード:ボタンでウィンドウを閉じる
次の例では、ウィンドウと「Close」ボタンを作成し、ボタンをクリックするとウィンドウが即座に閉じるようにしています。
# 必要なライブラリをインポート
from tkinter import *
# tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()
# タイトルを設定
win.title("Button Command Example")
# ウィンドウサイズを設定
win.geometry("600x300")
# ウィンドウ用のラベルを作成
Label(win, text="Example", font=('Times New Roman bold', 20)).pack(pady=20)
# 関数を定義
def close_event():
win.destroy()
# ボタンを作成し、commandに引数として関数名を渡す
my_button = Button(win, text="Close", font=('Helvetica bold', 20),
borderwidth=2, command=close_event)
my_button.pack(pady=20)
win.mainloop()
実行結果
上記のコードを実行すると、関数がButtonのcommandに引数として正しく渡されていることが確認できます。
表示されたウィンドウの「Close」ボタンをクリックすると、close_event()関数が呼び出され、win.destroy()によってウィンドウが閉じられます。
関数に実際の引数を渡したい場合
上の例では引数なしの関数を渡しましたが、実際の開発では「引数付きの関数」をcommandに渡したいケースも多くあります。その場合は、lambda式またはfunctools.partialを使用するのが一般的です。
lambdaを使う方法
def close_event(message):
print(message)
win.destroy()
# lambdaで引数を渡す
my_button = Button(win, text="Close", command=lambda: close_event("閉じます"))
functools.partialを使う方法
from functools import partial # partialで引数を固定する my_button = Button(win, text="Close", command=partial(close_event, "閉じます"))
なお、command=close_event()のように括弧を付けて書いてしまうと、ボタンを押す前に関数が実行されてしまうので注意してください。必ず関数オブジェクトそのもの(括弧なし)を渡すか、lambdaやpartialで包んで渡すようにしましょう。
-
Tkinterで画像をボタンとして使う方法をわかりやすく解説
Tkinterでは、画像ファイルをそのままボタンとして表示することができます。この記事では、角丸の画像ボタンを作成する方法を、実際のコード例とともに解説します。ここで紹介する手法は、フォーム、ゲーム、ダイアログボックスなど、さまざまなアプリケーションに応用できる汎用的なテクニックです。 画像ボタンの作り方の基本 Tkinterで見栄えの良い角丸ボタンを作る最も簡単な方法は、あらかじめ用意したボタン用の画像を、クリック可能なウィジェットとして配置することです。これを実現するのがPhotoImage()関数で、指定した画像ファイルを読み込んでボタンに渡すことができます。 具体的には、以下の手順で画
-
tkinterでウィンドウを閉じる方法|destroy()メソッドの使い方を解説
tkinterを使えば、Pythonで手軽にGUIアプリケーションを作成できます。しかし、タイトルバー右上の×ボタン以外の方法でウィンドウやフレームを閉じたい場合、どのように実装すればよいか悩むこともあるでしょう。そのようなときに役立つのが、ウィンドウを破棄して閉じるための .destroy() メソッドです。tkinterの各ウィジェットや属性は互いに独立しているため、「ウィンドウを閉じる処理」を専用の関数として分離して定義できます。これにより、ボタンのクリックイベントからウィンドウを閉じる動作を自由に制御可能です。サンプルコード# ライブラリをインポート from tkinter impo