Tkinter Radiobutton

ttk.Radiobutton とは?

ttk.Radiobutton は、複数の選択肢の中からひとつだけ選択するタイプのウィジェットです。

Tkinter window with radiobuttons

例えば二つのラジオボタン 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 では、同じ変数に値が保持される一つ以上のラジオボタンがグループ化されます。

Tkinter window with radiobuttons

Checkbutton では onvalueoffvalue でそれぞれ値を持つことができました。 しかし、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 を使用しています。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Python 入門