ラジオボタンはRadiobuttonクラスによって作成します。
チェックボタンでは他のチェックボタンとは関係なくチェック/チェック無しの状態が選べましたが、ラジオボタンは複数のラジオボタンの中から1つだけ選択する場合に用いられます。
以下に簡単なサンプルを示します。
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master = None):
super().__init__(master)
self.master.title("ラジオボタンの作成") # ウィンドウタイトル
self.master.geometry("300x150") # ウィンドウサイズ(幅x高さ)
# ラジオボタンの値
self.radio_value = tk.IntVar(value = 1) # 初期値を設定する場合
#self.radio_value = tk.IntVar() # 初期値を設定しないと0になる
# ラジオボタンの作成
radio0 = tk.Radiobutton(self.master,
text = "ラジオボタン0", # ラジオボタンの表示名
command = self.radio_click, # クリックされたときに呼ばれるメソッド
variable = self.radio_value, # 選択の状態を設定する
value = 0 # ラジオボタンに割り付ける値の設定
)
radio1 = tk.Radiobutton(self.master,
text = "ラジオボタン1", # ラジオボタンの表示名
command = self.radio_click, # クリックされたときに呼ばれるメソッド
variable = self.radio_value, # 選択の状態を設定する
value = 1 # ラジオボタンに割り付ける値の設定
)
radio2 = tk.Radiobutton(self.master,
text = "ラジオボタン2", # ラジオボタンの表示名
command = self.radio_click, # クリックされたときに呼ばれるメソッド
variable = self.radio_value, # 選択の状態を設定する
value = 2 # ラジオボタンに割り付ける値の設定
)
# ボタンの作成
button = tk.Button(self.master,
text = "ラジオボタンの選択を次へ", # ボタンの表示名
command = self.button_click # クリックされたときに呼ばれるメソッド
)
# 配置
radio0.pack()
radio1.pack()
radio2.pack()
button.pack()
def radio_click(self):
# ラジオボタンの値を取得
value = self.radio_value.get()
print(f"ラジオボタンの値は {value} です")
def button_click(self):
# 選択されているラジオボタンを次に移動させる
value = self.radio_value.get()
self.radio_value.set((value + 1) % 3)
if __name__ == "__main__":
root = tk.Tk()
app = Application(master = root)
app.mainloop()
(実行結果)
ポイント
- ラジオボタンの値(選択されたときの識別番号)はIntVarクラスオブジェクトをRadiobuttonクラスのvariableオプションに設定する
- 1つだけ選択される複数のラジオボタンには、それぞれ、同じIntVarクラスオブジェクトをvariableオプションに設定する
- 各ラジオボタンの値(選択されたときの識別番号)はRadiobuttonクラスのvalueオプションに設定しておく
- 選択されているラジオボタンの値(valueオプションで指定した値)は IntVarクラスオブジェクト.get() で行う
- 選択されているラジオボタンを変更するには IntVarクラスオブジェクト.set() の引数にラジオボタンの値(valueオプションで指定した値)を指定します。
オプション
オプション名 | 説明 |
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) |
offrelief | |
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始まり)の文字にアンダーラインを付加します。 |
value | ラジオボタンの値(選択されたときの識別番号) |
variable | チェックの状態をBooleanVarクラスオブジェクトで指定します。 |
width | ボタンの幅を文字数で指定します。 画像を配置した時は、画素数の指定になります。 |
wraplength | 文字の折り返し幅を指定します。 |
メソッド
メソッド | 説明 |
deselect() | 選択状態のとき、同じvariableオプションを設定している他のラジオボタンも全て選択状態になります。(詳細不明。。) |
flash() | backgroundとactivebackgroundで交互に色を点滅させて表示します。 |
invoke() | 選択状態にします。 |
select() | 選択状態にします。 |