Python ラジオボタンを動的に作成しボタンイベントと連携する(Radiobutton)

PythonではGUIアプリケーションを作り、ラジオボタン(Radiobutton)を作ることができます。

ボタンを押したイベントでラジオボタンでチェックされたものを取得したり、チェックを入れることができます。

今回は、Pythonでラジオボタン(Radiobutton)を動的に作成し、ボタンイベントと連携する方法を解説します。

ボタンをおしてラジオボタンのチェックされたものを取得する

tkinter

PythonでGUIを操作するには、「tkinter」モジュールを使います。

「tkinter」は「Tool Kit Interface」のことで、Python標準のGUIアプリケーションを作成するモジュールです。

チェックボタンの基本的な使い方はこちらを参照してください。

参考ページPython チェックボックス(チェックボタン)を作成する(tkinter・Checkbutton)

画面を作る

import tkinter, tkinter.messagebox

# Tkクラス生成
tki = tkinter.Tk()
# 画面サイズ
tki.geometry('300x200')
# 画面タイトル
tki.title('ラジオボタン')

画面作成の詳細はこちらを参照ください。

参考ページPythonでGUI 画面(ウィンドウ)を作る(tkinter)

ラジオボタンの基本的な使い方はこちらを参照してください。

参考ページPython ラジオボタン(Radiobutton)を作成する

 

次にボタンを押して、ラジオボタンのチェックされた項目を取得し、メッセージボックスに表示してみます。完成イメージはこちら。

ラジオボタンを動的に作成する

# ラジオボタンのラベルをリスト化する
rdo_txt = ['Python','Java','C#']
# ラジオボタンの状態
rdo_var = tkinter.IntVar()

# ラジオボタンを動的に作成して配置
for i in range(len(rdo_txt)):
    rdo = tkinter.Radiobutton(tki, value=i, variable=rdo_var, text=rdo_txt[i]) 
    chk.place(x=50, y=30 + (i * 24))

これでラジオボタンを動的に3つ作成し、ラジオボタンのチェック状態を制御できる準備ができました。

クリックイベント関数

# ボタンクリックイベント
def btn_click():
    num = rdo_var.get()
    tkinter.messagebox.showinfo('チェックされた項目', rdo_txt[num])

ボタンがクリックされたときのイベント関数「btn_click」を作成しました。ボタンがおされたらこの関数が呼ばれ、チェックされたラジオボタンの項目をメッセージボックスで表示します。

get・set

チェックボタンにチェックを入れる(set)・取得(get)

  • チェックする・・・tkinter.IntVar型変数.set(ラジオボタンのvalue)
  • チェックされたものを取得する・・・tkinter.IntVar型変数.get()

ここでは、動的に作成したチェックボタンのチェックされた項目を取得します。「tkinter.IntVar」型の変数「rdo_var」を「get」することで、チェックされた項目を取得できます。

ボタンイベント

# ボタン作成
btn = tkinter.Button(tki, text='ラジオボタン取得', command=btn_click)
btn.place(x=100, y=170)

ボタンを作成しました。ボタンがおされたら、関数「btn_click」を呼び出します。

ボタンの詳細はこちらを参照してください。

参考ページPython ボタンの作成、文字色、背景色(tkinter)

全コード

これまでのコードをすべてまとめたものがこちらになります。

import tkinter, tkinter.messagebox

# Tkクラス生成
tki = tkinter.Tk()
# 画面サイズ
tki.geometry('300x200')
# 画面タイトル
tki.title('ラジオボタン')

# ラジオボタンのラベルをリスト化する
rdo_txt = ['Python','Java','C#']
# ラジオボタンの状態
rdo_var = tkinter.IntVar()

# ラジオボタンを動的に作成して配置
for i in range(len(rdo_txt)):
    rdo = tkinter.Radiobutton(tki, value=i, variable=rdo_var, text=rdo_txt[i]) 
    rdo.place(x=50, y=30 + (i * 24))

# ボタンクリックイベント
def btn_click():
    num = rdo_var.get()
    tkinter.messagebox.showinfo('チェックされた項目', rdo_txt[num])

# ボタン作成 
btn = tkinter.Button(tki, text='ラジオボタン取得', command=btn_click)
btn.place(x=100, y=170) 

Pythonで「tkinter」を使ってラジオボタン(Radiobutton)を動的に作成して、ボタンをクリックしたらラジオボタンのチェックされている項目を取得することができました。

参考ページhttps://docs.python.jp/3/library/tk.html

以上、Pythonで「tkinter」を使ってラジオボタン(Radiobutton)を動的に作成しボタンイベントと連携する方法でした。

 

コメント

  1. ys より:

    お世話になっています。
    誤植があるようなので確認下さい。

    chk.place(x=50, y=30 + (i * 24))

    rdo.place(x=50, y=30 + (i * 24))

    • 鎖プロ より:

      オブジェクト名に誤りがあり、修正しました。
      ご指摘ありがとうございました!