Python3 - Tkinter ラジオボタンを作成する (ttk.Radiobutton)

目次

ラジオボタンを作成する

ラジオボタンを作成するためには、tkinter.ttk モジュールの Radiobutton クラスを利用します。

Radiobutton オブジェクトを生成するときは、「親ウィジェット」と「オプション」を指定することができます。

text オプション

text オプションに文字列を指定すると、その文字列がラジオボタンの隣に表示されます。

variable オプション

同じグループのラジオボタンには、 variable オプションに同じ Variable オブジェクトの変数を指定します。

value オプション

value オプションを指定すると、 ラジオボタンをクリックした時に、 指定してある Variable オブジェクトに value の値が渡されます。

ラジオボタンの選択を変更する

クリックすること以外で、ラジオボタンの選択を変更するには、 指定してある Variable オブジェクトの set メソッドを使います。 引数には選択したいラジオボタンの value と等しい値を指定します。

Example

source code

from tkinter import StringVar
from tkinter import Tk
from tkinter import ttk

class MainFrame(ttk.Frame):
    def __init__(self, master):
        super().__init__(master)
        self.configure(padding=(6, 4))
        self.pack()
        self.make_style()
        self.create_widgets()

    def make_style(self):
        pass

    def create_widgets(self):
        self.animal_var = StringVar()

        self.animal_rb1 = ttk.Radiobutton(self, text="Armadillo",
                                                variable=self.animal_var,
                                                value="a")
        self.animal_rb1.pack(side="top", anchor="w", padx=4, pady=4)

        self.animal_rb2 = ttk.Radiobutton(self, text="Bear",
                                                variable=self.animal_var,
                                                value="b")
        self.animal_rb2.pack(side="top", anchor="w", padx=4, pady=4)

        self.button1 = ttk.Button(self, text="Select Armadillo",
                                        width=12,
                                        command=self.button1_action)
        self.button1.pack(side="top", anchor="w", padx=4, pady=4)

        self.button2 = ttk.Button(self, text="Select Bear",
                                        width=12,
                                        command=self.button2_action)
        self.button2.pack(side="top", anchor="w", padx=4, pady=4)


    def button1_action(self):
        self.animal_var.set("a")

    def button2_action(self):
        self.animal_var.set("b")

root = Tk()
root.title("Tkinter win")
frame = MainFrame(root)
frame.mainloop()

result

表示内容 (プログラムを実行した直後):

実行結果

表示内容 (Select Armadillo ボタンをクリックした時):

実行結果

表示内容 (Select Bear ボタンをクリックした時):

実行結果

どのラジオボタンが選択されているか調べる

どのラジオボタンが選択されているか調べるには、 Radiobutton オブジェクトの variable オブジェクトで指定した Variable オブジェクトの get メソッドを使います。

Example

source code

from tkinter import StringVar
from tkinter import Tk
from tkinter import ttk

class MainFrame(ttk.Frame):
    def __init__(self, master):
        super().__init__(master)
        self.configure(padding=(6, 4))
        self.pack()
        self.make_style()
        self.create_widgets()

    def make_style(self):
        pass

    def create_widgets(self):
        self.animal_var = StringVar()
        self.animal_var.set("Armadillo")

        text = "Armadillo"
        self.animal_rb1 = ttk.Radiobutton(self, text=text,
                                                variable=self.animal_var,
                                                value=text)
        self.animal_rb1.pack(side="top", anchor="w", padx=4, pady=4)

        text = "Bear"
        self.animal_rb2 = ttk.Radiobutton(self, text=text,
                                                variable=self.animal_var,
                                                value=text)
        self.animal_rb2.pack(side="top", anchor="w", padx=4, pady=4)

        text = "Cat"
        self.animal_rb3 = ttk.Radiobutton(self, text=text,
                                                variable=self.animal_var,
                                                value=text)
        self.animal_rb3.pack(side="top", anchor="w", padx=4, pady=4)

        self.button1 = ttk.Button(self, text="CHECK",
                                        width=12,
                                        command=self.button1_action)
        self.button1.pack(side="top", anchor="w", padx=4, pady=4)

    def button1_action(self):
        print(self.animal_var.get(), "is selected.")

root = Tk()
root.title("Tkinter win")
frame = MainFrame(root)
frame.mainloop()

result

表示内容:

実行結果

ターミナル (Bear ラジオボタンを選択して、CHECK ボタンをクリックした時):

Bear is selected.

参考リンク