tkinter

【Python/tkinter】Radiobutton(ラジオボタン)

ラジオボタンは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()

(実行結果)

Python tkinter ラジオボタン

ポイント

  • ラジオボタンの値(選択されたときの識別番号)は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() 選択状態にします。

コメント

タイトルとURLをコピーしました