チェックボタン(チェックボックス)はCheckbuttonクラスによって作成します。
以下にサンプルを示します。
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master = None):
super().__init__(master)
self.master.title("チェックボックスの作成") # ウィンドウタイトル
self.master.geometry("300x100") # ウィンドウサイズ(幅x高さ)
# チェックボックスの値
self.check_value = tk.BooleanVar(value = True) # 初期値を設定する場合
#self.check_value = tk.BooleanVar() # 初期値を設定しないとFlaseになる
# チェックボックスの作成
self.check = tk.Checkbutton(self.master,
text = "チェックボックス", # チェックボックスの表示名
command = self.check_click, # クリックされたときに呼ばれるメソッド
variable = self.check_value # チェックの状態を設定する
)
# ボタンの作成
button = tk.Button(self.master,
text = "チェックを逆にする", # ボタンの表示名
command = self.button_click # クリックされたときに呼ばれるメソッド
)
# 配置
self.check.pack()
button.pack()
def check_click(self):
# チェックの状態を取得(チェックされているときはTrue)
value = self.check_value.get()
print(f"チェックの状態は {value} です")
def button_click(self):
# チェックの状態を取得し逆に設定する
value = self.check_value.get()
self.check_value.set(not value)
#以下のようにしても同じ
#self.check.toggle()
if __name__ == "__main__":
root = tk.Tk()
app = Application(master = root)
app.mainloop()
(実行結果)
ポイント
- チェックボタンの値(チェックされている(True)/されていない(False))はBooleanVarクラスオブジェクトをCheckbuttonクラスのvariableオプションに設定する
- チェックの状態の取得は BooleanVarクラスオブジェクト.get() で行う
- チェックの状態の設定は BooleanVarクラスオブジェクト.set() の引数にTrue もしくは False を渡す
オプション
オプション名 | 説明 |
activebackground | クリックされたときの背景色を指定します。 |
activeforeground | クリックされたときの文字色(チェックマークを含む)を指定します。 |
anchor | 文字の配置位置を指定します。 【設定値】tk.N, tk.S, tk.W, tk.E, tk.NW, tk.NE, tk.SW, tk.SE, tk.CENTER 【初期値】tk.CENTER ※width, heightを指定し、余白が生じている際に有効です。 |
background | 通常時(クリックされていないとき)の背景色を指定します。(bgと同じ) |
bd | 枠線の太さを指定します。 ただし、初期状態では枠線が表示されていないため、reliefで枠線のスタイルを指定する必要があります。(borderwidthと同じ) |
bg | backgroundと同じ |
bitmap | モノクロのBitmapを指定します。 (参考)https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/bitmaps.html |
borderwidth | bdと同じ |
command | ボタンがクリックされたときに呼び出すメソッドの名前を指定します。 |
compound | 文字と画像の両方を表示する際に、文字に対して画像の表示位置を指定します。 【設定値】tk.LEFT, tk.RIGHT, tk.BOTTOM, tk.TOP, tk.CENTER |
cursor | ウィジェット上にマウスポインタがある際のカーソルの種類を指定します。 (参考)https://tkdocs.com/shipman/cursors.html |
disabledforeground | stateオプションで無効(DISABLED)に設定している際の文字色を設定します。 |
fg | 表示する文字色を指定します。(foregroundと同じ) |
font | 表示する文字のフォントを指定します。 |
foreground | fgと同じ |
height | ボタンの高さを文字数で指定します。 画像を配置した時は、画素数の指定になります。 |
highlightbackground | |
highlightcolor | |
highlightthickness | |
image | 表示する画像を指定します。 |
indicatoron | |
justify | 複数行の文字のときの、文字寄せ方向を指定します。 【設定値】左寄せ(tk.LEFT), 中央寄せ(tk.CENTER), 右寄せ(tk.RIGHT) |
offvalue | チェックが無い時の値をTrue, Falseで指定します。 【初期値】False |
onvalue | チェックがある時の値をTrue, Falseで指定します。 【初期値】True |
overrelief | ウィジェット上にマウスポインタがある際のスタイルを指定します。 【設定値】tk.RAISED, tk.GROOVE, tk.SUNKEN, tk.RIDGE, tk.FLAT 【初期値】tk.FLAT(枠線なし) |
padx | 文字の両側の隙間を指定します。 |
pady | 文字の上下の隙間を指定します。 |
relief | ボタンのスタイルを指定します。 【設定値】tk.RAISED, tk.GROOVE, tk.SUNKEN, tk.RIDGE, tk.FLAT 【初期値】tk.FLAT(枠線なし) |
selectcolor | チェックボックス(チェックのある四角)の背景色を指定します。 |
selectimage | |
state | ウィジェットの有効/無効(操作できない状態)を指定します。 【設定値】tk.NORMAL, tk.DISABLED 【初期値】tk.NORMAL |
takefocus | |
text | 表示する文字を指定します。 |
textvariable | |
tristateimage | |
tristatevalue | |
underline | 指定した順番(先頭から0始まり)の文字にアンダーラインを付加します。 |
variable | チェックの状態をBooleanVarクラスオブジェクトで指定します。 |
width | ボタンの幅を文字数で指定します。 画像を配置した時は、画素数の指定になります。 |
wraplength | 文字の折り返し幅を指定します。 |
メソッド
メソッド | 説明 |
deselect() | チェックなし状態にします。 |
flash() | backgroundとactivebackgroundで交互に色を点滅させて表示します。 |
invoke() | |
select() | チェックあり状態にします。 |
toggle() | チェックのあり/なしを逆に設定します。 |