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

  1. Tkinter Checkbutton の基本的な例
  2. Tkinter チェックボタン選択/選択解除
  3. Tkinter チェックボタンの状態切り替え
  4. Tkinter Checkbutton コールバック関数のバインディング
  5. Tkinter チェックボタンのデフォルト値の変更

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

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

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

Tkinter Checkbutton の基本的な例

Tkinter CheckButton_Basic.py
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())
The checkbutton value when selected is True
The checkbutton value when deselected is False

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

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

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

Tkinter CheckButton_Select_Deselect.py
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()
The checkbutton original value is True
The checkbutton value after toggled is False
The checkbutton value after toggled twice is True

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

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

Tkinter CheckButton_CallBack.py
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 です。また、チェックボタンのデフォルト値とそれに関連するデータ型を他の値またはデータ型に変更することもできます。

Tkinter CheckButton_Select_OnValue_OffValue.py
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") 

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

注意

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

comments powered by Disqus