Tkinter Radiobutton
ttk.Radiobutton とは?
ttk.Radiobutton は、複数の選択肢の中からひとつだけ選択するタイプのウィジェットです。
例えば二つのラジオボタン A と B があり、現在 A が選択されているとします。そこで B をクリックすると、自動的に A は非選択となり、B が選択されます。
ttk.Radiobutton のオプション
ttk.Radiobutton ウィジェットの標準オプション
ttk.Radiobutton ウィジェットでは次の標準オプションが利用できます。
- class
- compound
- cursor
- image
- state
- style
- takefocus
- text
- textvariable
- underline
- width
ttk.Radiobutton ウィジェットの command オプション
ttk.Radiobutton ウィジェットの command オプションは、チェック状態が変わった時に実行する関数を指定します。
ttk.Radiobutton ウィジェットの value オプション
ttk.Radiobutton ウィジェットの value オプションは、選択された時に変数にセットする値を指定します。
ttk.Radiobutton ウィジェットの variable オプション
ttk.Radiobutton ウィジェットの variable オプションは、チェックボタンのチェック状態が変化した時に値を設定する変数を指定します。
ttk.Radiobutton のスタイル
ttk.Radiobutton のスタイルクラス名は TRadiobutton です。
TRadiobutton では次のオプションが指定できます。
- background : 背景色の設定
- compound : 画像と文字の表示位置の設定
- foreground : 文字色の設定
- indicatorbackground
- indicatorcolor
- indicatormargin
- indicatorrefief
- padding
ttk.Radiobutton を利用するサンプルコード
ここでは Tkinter の Radiobutton (ttk.Radiobutton) ウィジェットの使用例を示します。
Radiobutton では、同じ変数に値が保持される一つ以上のラジオボタンがグループ化されます。
Checkbutton では onvalue と offvalue でそれぞれ値を持つことができました。 しかし、Radiobutton では value 属性のひとつだけです。同じグループ内のラジオボタンにそれぞれ value 値を設定し、 選択されているラジオボタンの値が variable 属性で指定した変数に設定されます。
この例ではボタンを押すことで、コンソールに現在の値を出力します。
from tkinter import *
from tkinter import ttk
root = Tk()
root.title('Radiobutton 1')
# Frame
frame1 = ttk.Frame(root, padding=10)
# Style - Theme
ttk.Style().theme_use('classic')
# Label Frame
label_frame = ttk.Labelframe(
frame1,
text='Options',
padding=(10),
style='My.TLabelframe')
# Radiobutton 1
v1 = StringVar()
rb1 = ttk.Radiobutton(
label_frame,
text='Option A',
value='A',
variable=v1)
# Radiobutton 2
rb2 = ttk.Radiobutton(
label_frame,
text='Option B',
value='B',
variable=v1)
# Button
button1 = ttk.Button(
frame1,
text='OK',
padding=(20, 5),
command=lambda : print("v1=%s" % v1.get()))
# Layout
frame1.grid()
label_frame.grid(row=0, column=0)
rb1.grid(row=0, column=0) # LabelFrame
rb2.grid(row=0, column=1) # LabelFrame
button1.grid(row=1, pady=5)
# Start App
root.mainloop()
また上記の例では、ラジオボタンのグループを囲むために Labelframe を使用しています。