TUTORIAL · Tkinter

Tkinter チュートリアル - チェックボックス Checkbutton

このチュートリアルでは、キャンセル、選択ボタン、および多選択ボタンのデフォルト値を設定する方法などを含む、Tkinter checkButton 複数のチェックボックスを紹介します。

このページの内容

Checkbutton 多選択ボタンコントロールは、複数のオプションを含むコントロールです。多選択ボタンはテキストまたは画像を含むことができます。多選択ボタンをクリックするときに呼び出すコールバック関数をバインドすることもできます。

既存の親ウィンドウに Checkbutton ウィジェットを作成するには、使用します

tk.Checkbutton(parent, option, ...)

Tkinter Checkbutton の基本的な例

import tkinter as tk

app = tk.Tk()
app.geometry("150x100")

chkValue = tk.BooleanVar()
chkValue.set(True)

chkExample = tk.Checkbutton(app, text="Check Box", var=chkValue)
chkExample.grid(column=0, row=0)

app.mainloop()

Tkinter チュートリアルのチェックボタンの基本的な例

chkValue = tk.BooleanVar()

各チェックボタンは変数に関連付ける必要があります。変数のデータ型は、選択/選択解除されたときにチェックボタンによって決定されます。

chkValue.set(True)

チェックボタンの元の値を設定します。それはただ Boolean データタイプに与えられただけですので、ここでは二つのオプションしかありません、True または False。

chkExample = tk.Checkbutton(app, text="Check Box", var=chkValue)

これで、上で作成した変数 chkValue を使用して、checkbutton インスタンスが最終的に作成されます。

chkExample.grid(column=0, row=0)

Tkinter ラベル部分に紹介されている pack 以外に、grid は別のタイプの Tkinter レイアウトマネージャです。

Tkinter には 3つのレイアウト/ジオメトリマネージャーがあり、

  • pack
  • grid
  • place

このチュートリアルの 1つのセクションで、これらのレイアウト/ジオメトリマネージャーを紹介します。

Tkinter チェックボタン選択/選択解除

ユーザーは、GUI のチェックボタンをクリックして、ボタンを選択または選択解除できます。select() と deselect() を使って選択を選択したり、キャンセルしたりすることもできます。

chkExample.select()
print "The checkbutton value when selected is {}".format(chkValue.get())
chkExample.select()
print "The checkbutton value when deselected is {}".format(chkValue.get())
# Output:
# The checkbutton value when selected is True
# The checkbutton value when deselected is False

ここでは、チェックボタンの値は get() メソッドによって取得されます。

Tkinter チェックボタンの状態切り替え

チェックボタンの状態は select() と deselect() によって修正されてもいいし、toggle() という方法で切り替えることもできます。

import tkinter as tk

app = tk.Tk()
app.geometry("150x100")

chkValue = tk.BooleanVar()
chkValue.set(True)

chkExample = tk.Checkbutton(app, text="Check Box", var=chkValue)
chkExample.grid(column=0, row=0)

print "The checkbutton original value is {}".format(chkValue.get())
chkExample.toggle()
print "The checkbutton value after toggled is {}".format(chkValue.get())
chkExample.toggle()
print "The checkbutton value after toggled twice is {}".format(chkValue.get())

app.mainloop()

# Output:
# The checkbutton original value is True
# The checkbutton value after toggled is False
# The checkbutton value after toggled twice is True

Tkinter Checkbutton コールバック関数のバインディング

Checkbutton ウィジェットは、状態を選択するために使用されます。また、選択/選択解除、またはよりより直接的な切り替え時に、コールバック関数をイベントにバインドできます。複数選択ボタンの状態が切り替えられるたびに、コールバック関数がトリガーされます。

import tkinter as tk
from _cffi_backend import callback


def callBackFunc():
    print "Oh. I'm clicked"


app = tk.Tk()
app.geometry("150x100")

chkValue = tk.BooleanVar()
chkValue.set(True)

chkExample = tk.Checkbutton(app, text="Check Box", var=chkValue, command=callBackFunc)
chkExample.grid(column=0, row=0)

app.mainloop()

チェックボタンを押すたびに、コンソールに Oh. I'm clicked プリントアウトしたのが見えます。

Checkbutton クラスの command オプションは、ボタンが押されたときにコールバック関数またはメソッドをバインドするためのものです。

Tkinter チェックボタンのデフォルト値の変更

選択されていないチェックボタンに対応するデフォルト値は 0 であり、選択されたチェックボタンのデフォルト値は 1 です。また、チェックボタンのデフォルト値とそれに関連するデータ型を他の値またはデータ型に変更することもできます。

import tkinter as tk

app = tk.Tk()
app.geometry("150x100")

chkValue = tk.StringVar()

chkExample = tk.Checkbutton(
    app, text="Check Box", var=chkValue, onvalue="RGB", offvalue="YCbCr"
)
chkExample.grid(column=0, row=0)

chkExample.select()
print "The checkbutton value when selected is {}".format(chkValue.get())
chkExample.deselect()
print "The checkbutton value when deselected is {}".format(chkValue.get())

app.mainloop()
# The checkbutton value when selected is RGB
# The checkbutton value when deselected is YCbCr
chkExample = tk.Checkbutton(
    app, text="Check Box", var=chkValue, onvalue="RGB", offvalue="YCbCr"
)

onvalue と offvalue は、選択状態と非選択状態の値を変更するオプションです。これらは、Int、String、Float などのデータタイプがあり得る。

注意
Checkbutton チェックボタンに関連する Tkinter データタイプは、その onvalue と offvalue のデータタイプと同じであるべきです。そうしないと、_tkinter.TclError エラーが発生します。