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

胡金庫 2023年1月30日
  1. Tkinter Checkbutton の基本的な例
  2. Tkinter チェックボタン選択/選択解除
  3. Tkinter チェックボタンの状態切り替え
  4. Tkinter Checkbutton コールバック関数のバインディング
  5. Tkinter チェックボタンのデフォルト値の変更
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"
)

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

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

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook