tkinter.(ttk.)Checkbutton【チェックボックス ウィジェット】
メモ ( 作成 テキスト 値の初期化・取得・設定 有効化・無効化 チェックスタイル 状態変化処理 ) オプション メソッド
例 ( 作成 値の初期化・取得・設定 )
メモ
- チェックボックス ウィジェットの作成〔 例 〕
- tkinter.Checkbutton:従来のウィジェット
- tkinter.ttk.Checkbutton:テーマ付きウィジェット
- テキスト
- 変更なし:text【テキスト文字列】に指定 (書き換えも可能)
- 変更あり:textvariable【ウィジェット変数】にテキスト用のウィジェット変数を指定
- 複数行:改行 ('\n') を使用
- 値の初期化・取得・設定〔 例 〕
操作 処理 初期化 ・値用ウィジェット変数作成し、初期値設定
・variable【値用ウィジェット変数】に上記変数を設定
・OFF 値をデフォルトから変更する場合は、offvalue【OFF 値】を設定
・ON 値をデフォルトから変更する場合は、onvalue【ON 値】を設定OFF 値用ウィジェット変数のset()【値 設定】で OFF 値を設定
または deselect( )【選択解除】tkON 値用ウィジェット変数のset()【値 設定】で ON 値を設定
または select( )【選択】tk切り替え toggle( )【選択状態 切り替え】tk 取得 値用ウィジェット変数のget()【値 取得】で取得 - 有効化・無効化
- state【状態】を NORMAL【通常状態】または DISABLED【無効状態】に設定
- (stateflags)【状態フラグ】ttk の 'disabled'【無効状態】を ON/OFF (上記とどちらかを使用)
- チェックスタイル tk
- indicatoron【インジケータの描画有無】を指定
True (チェック記号 スタイル):選択された項目にチェック記号 (デフォルト)
False (押しボタン スタイル):選択されたボタンは押下状態
- indicatoron【インジケータの描画有無】を指定
- 状態変化処理
- command【状態変化処理関数】に引数なしの関数を指定
- 複数チェックボックスを同一関数で処理:lambda【ラムダ式】を使用して、 各チェックボックスから固有引数で関数(引数あり)を呼び出し
外部リンク
オプション
メモ
- オプションの設定方法
- コンストラクタで辞書型引数 (tk のみ)・キーワード引数として指定
- オプション名を辞書インデックスとして指定 ( widget ['オプション名'] )
- config・configure【オプション設定・取得】で辞書型引数・キーワード引数として指定
- オプション関連のメソッド
- オプション関連メソッド
- Style.configure( ):Style に設定した値
- 注) 実装依存 (各種ドキュメントに相違があり)
オプション 一覧
個別 | tk | ttk | 説明 |
---|---|---|---|
command | ● | Config | 状態変化処理関数 (引数なし)〔状態変化処理〕 (実行前に variable【値変数】 は更新) |
state | ● | Config | 状態 (tk 互換用 ttk:(stateflags)【状態フラグ】を上書き) ・NORMAL:通常状態 (foreground【前景色】を使用) ・DISABLED:無効状態 (disabledforeground【無効状態の前景色】を使用) |
(stateflags) | state( ) 〔詳細〕 | 状態フラグ (組合せ:state【状態】の変更なし) ・(なし):通常状態 ・'active':アクティブ状態 ・'alternate':不確定状態 ・'disabled':無効状態 ・'pressed':押下状態 ・'readonly':読み込み専用状態 ・'selected':選択状態 | |
テキスト・画像 | tk | ttk | 説明 |
font | ● | Style | フォント (tkinter.Font) |
text | ● | Config | テキスト文字列 |
textvariable | ● | Config | テキスト用ウィジェット変数 |
compound | ● | ● | テキストと画像の合成 (テキスト対しての画像位置) |
bitmap | ● | ビットマップ画像 ( image【画像】を優先 ) | |
image | ● | ● | 画像 ( bitmap【ビットマップ画像】 より優先) |
selectimage | ● | ON 値の画像 (image【画像】未指定:無視) | |
tristateimage | ● | 不明状態の画像 (image【画像】未指定:無視) | |
値 | tk | ttk | 説明 |
offvalue | ● | Config | OFF 値 (デフォルト:0・OFF・NO・FALSE ) |
onvalue | ● | Config | ON 値 (デフォルト:1・ON・YES・TRUE ) |
tristatevalue | ● | 不確定状態の値 (デフォルト:空文字列 ) | |
variable | ● | Config | 値用ウィジェット変数 |
サイズ・配置 | tk | ttk | 説明 |
height | ● | ※ | 高さ (省略:自動計算) ・文字のみ:行数 ・画像あり:ピクセル数 等 ※:padding【内部間隔のリスト】の上下間隔で調整可能 |
width | ● | ● | 幅 (省略・0:自動計算 / 負:最小幅) ・文字のみ:文字数 ・画像あり:ピクセル数 等 |
anchor | ● | Style | テキスト等の配置位置 |
justify | ● | Style | 複数行テキストの揃え ・LEFT【左端揃え】 ・CENTER【中央揃え】 ・RIGHT【右端揃え】 |
padding | ● | 内部間隔のリスト (左端・上端・右端・下端の順) | |
padx | ● | x方向の内部間隔 (ピクセル単位 等) | |
pady | ● | y方向の内部間隔 (ピクセル単位 等) | |
wraplength | ● | ● | ワードラップの幅 (スクリーン座標系単位) (0以下:折り返しなし) |
外観 | tk | ttk | 説明 |
indicatormargin | Style | インジケータの外部間隔のリスト (ピクセル単位:左端・上端・右端・下端の順) | |
indicatoron | ● | インジケータ (チェック記号) の描画有無 ・True:チェック記号で表現 ( relief【外観】は有効 ) ・False:押しボタン形状 ( relief【外観】は無効 / 参考:offrelief【OFF 値の外観】) | |
indicatorrelief | Style | インジケータの外観 | |
offrelief | ● | OFF 値の外観 (デフォルト:RAISED【隆起 (凸)】) | |
overrelief | ● | マウスカーソルが上にある場合の外観 (デフォルト:空文字列【未使用】) | |
relief | ● | ● | 外観 |
色 関連 | tk | ttk | 説明 |
background (bg) | ● | Style (―) | 背景色 |
foreground (fg) | ● | Style (―) | 前景色 |
activebackground | ● | Style.map() [background] | アクティブ状態の背景色 |
activeforeground | ● | Style.map() [foreground] | アクティブ状態の前景色 |
disabledforeground | ● | Style.map() [foreground] | 無効状態の前景色 |
highlightbackground | ● | 外枠の色 (入力フォーカスなし) | |
highlightcolor | ● | 外枠の色 (入力フォーカスあり) | |
highlightthickness | ● | 外枠の幅 (入力フォーカス用) | |
indicatorbackground | Style | インジケータの背景色 | |
indicatorcolor | Style | インジケータの前景色 | |
selectcolor | ● | Style.map( ) [background] | ON 値の背景色 (デフォルト:空文字列【未使用】) indicatoron【インジケータの描画有無】の指定値により下記動作 ・True【有効】:ON / OFF に関係なくインジケータの背景色として使用 ・False【無効】:ON の場合に背景色として使用 |
共通 | tk | ttk | 説明 |
borderwidth (bd) | ● | 境界線の幅 | |
class_ | ○ | クラス名 | |
cursor | ● | Config | マウスカーソル名 |
name | ○ | ○ | インスタンス名 (省略:自動命名) 先頭は小文字・ドットは不可 / フルパスで一意 〔 インスタンス識別 〕 |
style | Config | スタイル名 (TCheckbutton) | |
takefocus | ● | Config | [Tab]キー等でのフォーカス移動の有無〔フォーカス〕 ・'' (空文字列):自動設定 ・False:なし (スキップ) ・True:あり (タブストップ) |
underline | ● | Config | 下線の文字位置 (0~) (ショートカットキー用:実装は別途必要) |
凡例
●:各種方法で指定可能
○:コンストラクタでのみ指定可能
▲:config( ) 等でのみ指定可能
Config:コンストラクタ 及び config( ) 等で指定可能
Style:Style でのみ指定可能
Method:メソッドの引数で指定
Default:デフォルト値
:テーマ依存
○:コンストラクタでのみ指定可能
▲:config( ) 等でのみ指定可能
Config:コンストラクタ 及び config( ) 等で指定可能
Style:Style でのみ指定可能
Method:メソッドの引数で指定
Default:デフォルト値
:テーマ依存
style.map (スタイル名, 対象 = [(状態, 状態の値)])
対象 | 状態 | オプション | 備考 |
---|---|---|---|
background 【背景色】 | active【アクティブ状態】 | activebackground | |
alternate【切り替え表示状態】 | |||
disabled【無効状態】 | |||
pressed【押下状態】 | active【アクティブ状態】より前に定義 | ||
readonly【読み取り専用状態】 | |||
selected【ON 状態】 | selectcolor | ||
foreground 【前景色】 | active【アクティブ状態】 | activeforeground | |
alternate【切り替え表示状態】 | |||
disabled【無効状態】 | disabledforeground | ||
pressed【押下状態】 | active【アクティブ状態】より前に定義 | ||
readonly【読み取り専用状態】 | |||
selected【ON 状態】 |
色 | 説明 |
---|---|
'色名' | 色名:'red'・'green'・'blue'・'gray0'~'gray100'・'system~' 等 下記参照 Tcl8.6/Tk8.6 - Tk Commands - colors (同名色でも HTML5:カラー定義 と定義に差異あり) |
'#RGB' | 16進 4ビット |
'#RRGGBB' | 16進 8ビット |
'#RRRGGGBBB' | 16進 12ビット |
'#RRRRGGGGBBBB' | 16進 16ビット |
配置位置の詳細 ( anchor )
配置位置 | 説明 |
---|---|
'配置位置' | 東西南北 (news) を使用した8方向 と 中央の文字列 下記参照 |
'nw' NW | 'n' N | 'ne' NE |
'w' W | 'center' CENTER | 'e' E |
'sw' SW | 's' S | 'se' SE |
マウスカーソル名の詳細 ( cursor )
マウスカーソル名 | 説明 |
---|---|
'マウスカーソル名' | 下記参照 ('arrow'・'wait' 等) Tcl8.6/Tk8.6 - Tk Commands - cursors (英語) Tkinter 8.5 reference: a GUI for Python - Cursors (英語) |
テキストと画像の合成の詳細 ( compound )
指定値 | 説明 (テキスト対しての画像位置) |
---|---|
'text' ttk | テキストのみ表示 |
'image' ttk | 画像のみ表示 |
NONE | テキストの代わりに画像表示 |
BOTTOM | 画像をテキストの下側に表示 |
TOP | 画像をテキストの上側に表示 |
LEFT | 画像をテキストの左側に表示 |
RIGHT | 画像をテキストの右側に表示 |
CENTER | 画像をテキストの上に表示 |
ビットマップ画像の詳細 ( bitmap )
指定値 | 説明 |
---|---|
@ファイル名 | 標準X11形式 ビットマップ ファイル名 |
組み込み画像名 | 下記参照 ('error'・'hourglass'・'info'・'question'・'warning' 等) Tcl8.6/Tk8.6 - Tk C API - GetBitmap (英語) Tkinter 8.5 reference: a GUI for Python - Bitmaps (英語) |
内部間隔リストの詳細 ( padding )
指定値 | 説明 |
---|---|
[内部間隔 (左), 内部間隔 (上), 内部間隔 (右), 内部間隔 (下)] | 内部間隔の指定 (左から時計回り) |
[内部間隔 (左), 内部間隔 (上・下), 内部間隔 (右)] | |
[内部間隔 (左・右), 内部間隔 (上・下)] | |
内部間隔 (上・下・左・右) |
外観の詳細 ( relief )
外観 | 説明 |
---|---|
FLAT | フラット |
GROOVE | 凹み枠 |
RAISED | 隆起 (凸) |
RIDGE | 隆起枠 (凸枠) |
SOLID | 実線 |
SUNKEN | 凹み |
メソッド
コンストラクタ | 備考 |
---|---|
Checkbutton(master=None, cnf={ }, **kw) ttk.Checkbutton(master=None, **kw) | コンストラクタ master親 (tkinter.Tk【トップレベルウィンドウ】・コンテナウィジェット) cnf (辞書型引数)辞書型のオプション kw (キーワード引数)オプション (複数可) |
固有メソッド | 備考 |
deselect( ) tk | 選択解除 |
flash( ) tk | 点滅 ('disabled'【無効状態】では無視) (一部の環境でサポート) |
invoke( ) | 状態変化処理実行 ('disabled'【無効状態】では無視) (選択状態を切り替え、command【状態変化処理関数】を実行) |
select( ) tk | 選択 |
toggle( ) tk | 選択状態の切り替え |
共通メソッド (抜粋) 〔詳細はリンク先〕 | 備考 |
cget( 'option' ) widget['option'] | オプション値 取得 下の構文はオプション値の設定も可 |
config( ~ ) configure( ~ ) | オプション 設定・取得 |
pack( ~ ) | 配置 (パック形式) |
grid( ~ ) | 配置 (グリッド形式) |
place( ~ ) | 配置 (座標形式) |
state( ~ ) ttk | 状態フラグ 取得・設定 |
instate( ~ ) ttk | 状態フラグ チェック |
例
作成
import tkinter as tk
import tkinter.ttk as ttk
# トップレベルウィンドウ作成
root = tk.Tk()
# tk.Checkbutton
var_checkbutton = tk.IntVar(value=1)
checkbutton = tk.Checkbutton(
root,
text="Checkbutton",
variable=var_checkbutton,
)
checkbutton.pack(anchor=tk.W, padx=10, pady=10)
# ttk.Checkbutton
var_checkbutton_ttk = tk.IntVar(value=1)
checkbutton_ttk = ttk.Checkbutton(
root,
text="ttk.Checkbutton",
variable=var_checkbutton_ttk,
)
checkbutton_ttk.pack(anchor=tk.W, padx=10, pady=10)
# メインループ
root.mainloop()
値の初期化・取得・設定
import tkinter as tk
import tkinter.ttk as ttk
# ON / OFF
def check_onoff(flag):
if flag == True:
var_check.set(1)
var_check_onoff.set("ON")
var_check_ttk.set(1)
var_check_ttk_onoff.set("ON")
else:
var_check.set(0)
var_check_onoff.set("OFF")
var_check_ttk.set(0)
var_check_ttk_onoff.set("OFF")
# Get
def check_get():
var_label.set(var_check.get())
var_label_onoff.set(var_check_onoff.get())
var_label_ttk.set(var_check_ttk.get())
var_label_ttk_onoff.set(var_check_ttk_onoff.get())
# deselect()
def check_deselect():
checkbutton.deselect()
checkbutton_onoff.deselect()
# select()
def check_select():
checkbutton.select()
checkbutton_onoff.select()
# toggle()
def check_toggle():
checkbutton.toggle()
checkbutton_onoff.toggle()
# トップレベルウィンドウ作成
root = tk.Tk()
# tk.Checkbutton
var_check = tk.IntVar(value=1)
checkbutton = tk.Checkbutton(
root, text="Checkbutton",
variable=var_check)
checkbutton.grid(row=0, column=0, columnspan=2, sticky=tk.W, padx=5)
#
var_label = tk.StringVar(value="label")
label = ttk.Label(
root, relief=tk.GROOVE,
textvariable=var_label)
label.grid(row=0, column=2, sticky=tk.NSEW, padx=5, pady=5)
# tk.Checkbutton (ON/OFF 値変更)
var_check_onoff = tk.StringVar()
var_check_onoff.set("ON")
checkbutton_onoff = tk.Checkbutton(
root, text="Checkbutton_onoff",
offvalue="OFF",
onvalue="ON",
variable=var_check_onoff)
checkbutton_onoff.grid(row=1, column=0, columnspan=2, sticky=tk.W, padx=5)
#
var_label_onoff = tk.StringVar(value="label_onoff")
label_onoff = ttk.Label(
root, relief=tk.GROOVE,
textvariable=var_label_onoff)
label_onoff.grid(row=1, column=2, sticky=tk.NSEW, padx=5, pady=5)
# ttk.Checkbutton
var_check_ttk = tk.IntVar()
var_check_ttk.set(tk.ON)
checkbutton_ttk = ttk.Checkbutton(
root, text="ttk.Checkbutton",
variable=var_check_ttk)
checkbutton_ttk.grid(row=2, column=0, columnspan=2, sticky=tk.W, padx=5)
#
var_label_ttk = tk.StringVar(value="label_ttk")
label_ttk = ttk.Label(
root, relief=tk.GROOVE,
textvariable=var_label_ttk)
label_ttk.grid(row=2, column=2, sticky=tk.NSEW, padx=5, pady=5)
# ttk.Checkbutton (ON/OFF 値変更)
var_check_ttk_onoff = tk.StringVar()
var_check_ttk_onoff.set("ON")
checkbutton_ttk_onoff = ttk.Checkbutton(
root,
text="ttk.Checkbutton_onoff",
offvalue="OFF",
onvalue="ON",
variable=var_check_ttk_onoff)
checkbutton_ttk_onoff.grid(row=3, column=0, columnspan=2, sticky=tk.W, padx=5)
#
var_label_ttk_onoff = tk.StringVar(value="label_ttk_onoff")
label_ttk_onoff = ttk.Label(
root, relief=tk.GROOVE,
textvariable=var_label_ttk_onoff)
label_ttk_onoff.grid(row=3, column=2, sticky=tk.NSEW, padx=5, pady=5)
# Button (Off)
button_off = ttk.Button(
root, text="Off",
command=lambda : check_onoff(False))
button_off.grid(row=4, column=0, padx=5, pady=5)
# Button (On)
button_on = ttk.Button(
root, text="On",
command=lambda : check_onoff(True))
button_on.grid(row=4, column=1, padx=5, pady=5)
# Button (Get)
button_get = ttk.Button(
root, text="Get",
command=check_get)
button_get.grid(row=4, column=2, padx=5, pady=5)
# Button (deselect)
button_toggle = ttk.Button(
root, text="deselect() [tk]",
command=check_deselect)
button_toggle.grid(row=5, column=0, padx=5, pady=5)
# Button (select)
button_toggle = ttk.Button(
root, text="select() [tk]",
command=check_select)
button_toggle.grid(row=5, column=1, padx=5, pady=5)
# Button (toggle)
button_toggle = ttk.Button(
root, text="toggle() [tk]",
command=check_toggle)
button_toggle.grid(row=5, column=2, padx=5, pady=5)
# メインループ
root.mainloop()