ラジオボタンの選択でラベルの表示・非表示にして、文字、色を変更する。
Tkinterは、Pythonに標準搭載されているライブラリで、
ラジオボタンは、ユーザーに複数の選択肢から一つを選ばせる場面でよく使われます。
本記事では、Tkinterラジオボタン(radio button)をどうやって使うのか、
そして複数のラジオボタンをグループ化する方法について詳しく解説します。
- Pythonを学び始めたばかりで、GUIアプリケーションの作り方を知りたい人
- Tkinterでラジオボタンを使った選択肢を実装したい人
- ユーザーインターフェースのデザインを簡単に試したい人複数のラジオボタンをグループ化する方法を理解したい人
- Tkinterを使ってイベント処理を組み込んだインタラクティブなアプリケーションを作りたい人
画面(ウィンドウ)作成
TkinterでGUIアプリを作成する際、まず最初に行うのがウィンドウの作成です。
tk.Tk()を使ってメインウィンドウを生成し、ウィンドウ内にウィジェットを配置していきます。
import tkinter as tk
root = tk.Tk() # メインウィンドウを作成
root.title("タイトル名") # ウィンドウのタイトルを設定
root.geometry("300x200") # ウィンドウサイズを指定(幅x高さ)
root.mainloop()
ウィンドウの大きさやタイトルを設定することで、見た目を調整できます。
これがユーザーとのインターフェースの基盤となる部分です。
ラジオボタンの作成
ラジオボタンは、複数の選択肢から1つだけ選べるようにするためのウィジェットです。
radio = tk.Radiobutton(root, text="radio button")
radio.pack() # ウィンドウにラジオボタンを配置
さらに、tk.Radiobutton()を使って作成し、
variableオプションで選択結果を保持する変数を指定することもできます。
これにより、ユーザーがどのボタンを選択したかをプログラムで取得できるようになります。
ラジオボタンを使用する用途
ラジオボタンの用途は、多岐に広がり使用することでユーザビリティの向上につながります。
オプション一覧(色・フォントなど)
ラジオボタンを使用する際、表示されるテキストや色、フォント、大きさなどのデザインを変更することでより見やすく、使いやすいUIを作成できます。
fgで文字色、fontでフォントスタイル、padxとpadyでボタン間のスペースを調整できます。
radio = tk.Radiobutton(root, text="radio button", variable=color_var, value="radio button", fg="red", font=("Arial", 12))
radio.pack(padx=20, pady=5)
ラジオボタンを複数(グループ化)する
複数のラジオボタンをグループ化するには、共通のvariableを指定するだけで可能です。
異なる選択肢が同じ変数に関連付けられていることで、
1つのグループとして扱われ、ユーザーはその中から1つだけ選択できます。
これにより、選択肢が直感的に分かりやすくなります。
colors = ["黒", "赤", "青", "緑"]
for color in colors:
radio = tk.Radiobutton(root, text=color, variable=color_var, value=color)
radio.pack(anchor='w') # 左寄せで配置
配置には、anchorオプションを使います。
注意点は、左(left)ではなく、方角で西(west)を使用します。
縦、横並びの方法
ラジオボタンを縦にするには、デフォルトで列になります。
横に並べるには、pack()メソッドのsideオプションやgrid()メソッドを使います。
# 横に並べる場合
radio.pack(side='left')
これにより、複数のラジオボタンを任意のレイアウトで配置することが可能です。
初期値を指定して、選択した値に更新
ユーザーがラジオボタンを選択した後、その選択された値を取得するには、
variable.get()を使用します。
variable.get()メソッドで初期値を指定します。
この値はプログラム開始時に設定したデフォルト値です。
selected_color = color_var.get(value="初期値") # 初期値を取得
例えば、色を選択する際に最初にどの色が選ばれているか確認するために使えます。
import tkinter as tk
def show_selected():
selected_color = color_var.get() # 現在選択されている値を取得
print(f"選択された色は: {selected_color}")
root = tk.Tk() # メインウィンドウを作成
root.title("タイトル名") # ウィンドウのタイトルを設定
root.geometry("300x200") # ウィンドウサイズを指定(幅x高さ)
color_var = tk.StringVar(value="黒") # 選択結果を保持する変数
# ラジオボタンの作成
radio_black = tk.Radiobutton(root, text="黒", variable=color_var, value="黒", command=show_selected)
radio_black.pack()
radio_red = tk.Radiobutton(root, text="赤", variable=color_var, value="赤", command=show_selected)
radio_red.pack()
radio_blue = tk.Radiobutton(root, text="青", variable=color_var, value="青", command=show_selected)
radio_blue.pack()
root.mainloop()
イベント処理・追加方法
既に使用していますが、
ラジオボタンで選択されたときに特定の処理を実行するには、commandオプションを使用します。
これにより、ラジオボタンがクリックされたときに自動的に指定された関数が呼び出され、
イベント処理が追加されます。
radio = tk.Radiobutton(root, text="赤", variable=color_var, value="赤", command=update_label)
radio.pack()
ラジオボタンの選択でラベルの表示と文字、色を変更
ラジオボタンで選択された値に応じて、ラベルのテキストや色を変更する処理を行います。
選択された色を取得し、ラベルの文字を更新します。
また、特定の選択肢でラベルを非表示にすることも可能です。
ソースコード
import tkinter as tk
def update_label():
selected_color = color_var.get()
if selected_color == "非表示":
label.pack_forget() # ラベルを非表示にする
else:
label.config(text=f"{selected_color}色で表示しています", fg=get_color(selected_color))
label.pack() # ラベルを再表示する
def get_color(color_name):
color_dict = {
"黒": "black",
"赤": "red",
"青": "blue",
"緑": "green"
}
return color_dict.get(color_name, "black")
# ウィンドウの設定
root = tk.Tk()
root.title("色選択アプリ")
root.geometry("300x200")
# ラジオボタンの値を保持する変数
color_var = tk.StringVar(value="黒")
# ラジオボタンの設定
colors = ["黒", "赤", "青", "緑", "非表示"]
for color in colors:
rb = tk.Radiobutton(root, text=color, variable=color_var, value=color, command=update_label)
rb.pack(anchor='w', padx=20, pady=5)
# ラベルの初期設定
label = tk.Label(root, text="黒色で表示しています", fg="black")
label.pack()
# ウィンドウのループ処理
root.mainloop()
Pythonの学習進め方
Pythonでできることは多岐に渡ります。
Pythonは強力で柔軟なプログラミング言語ですが、常に情報がアップデートされるので、
新しいライブラリやフレームワークを独学で学び続けることは困難です。
Udemyは動画で目的に応じた講座を受講できるのでレベルを合わせて学習できます。
購入した講座は再生・停止・スキップなどが可能なオンデマンド形式なので、
専門的な内容を自分のペースで独学できます。
Pythonでデータサイエンスや人工知能、GUIを学びたい人はUdemy学習を取り入れましょう。
数多くある講座の中から特におすすめな講座を5つ紹介します。
ビックセール開催中(10月11日まで)
対象のコースが1500円から(最大95%OFF)
Pythonをインストールから環境設定、基本文法が学習できる。さらに、モジュールの使い方やファイル操作の他に暗号化、並列化、インフラ自動化、キューイングシステム、非同期処理についても学べます。
Pythonの基礎を押さえつつ、人口知能やニューラルネットワーク、機械学習を取り扱う。機械学習ライブラリで文字認識や株価分析などを行う。
データサイエンティストになるために必要なツールについて学ぶことができる。統計分析、NumpyやPandasなどを使ったPythonのプログラミング、機械学習の実装、ディープラーニングの実装を学習できる。
PythonでGUIを作成する方法を取り扱う。Tkinterの発展的な操作まで学習できる。翻訳アプリ、家計簿アプリ、電卓アプリ、音楽再生アプリなど作成して、exeファイル化する。
解説
- モジュール名
「tkinter」:インストールは不要で、Pythonに標準で付属しているためすぐに使用可能です。
- フィールド(メンバ変数)
「root」:Tkウィンドウオブジェクトで、GUIアプリケーションのメインウィンドウを表します。
「color_var」:tk.StringVar()で作成され、ラジオボタンの選択した色を保持します。初期値は「黒」に設定されています。
「label」:tk.Labelオブジェクトで、選択された色のテキストを表示するためのラベルです。初期値は「黒色で表示しています」。
- 関数・メソッド
update_label関数
選択された色に基づいてラベルの表示を更新する処理を行います。
ラジオボタンで「非表示」が選択された場合、label.pack_forget()を使ってラベルを非表示にし、
それ以外の色が選択された場合はlabel.config()でラベルのテキストと色を更新し、再表示します。
get_color関数
渡された色名(”黒”、”赤”、”青”、”緑”)を英語の色名(”black”、”red”、”blue”、”green”)に変換します。color_dictを使用し、該当しない場合はデフォルトで黒を返します。
実演
ラジオボタンの作成:5つのラジオボタン(黒、赤、青、緑、非表示)をウィンドウ内に作成し、それぞれの選択肢をクリックすると関数が呼び出して、ラベルと表示を更新します。
また、「非表示」が選択された場合にはラベルが非表示になる処理を実装しています。
まとめ
Tkinterを使用したラジオボタンの実装は、シンプルでありながら強力な機能を提供します。
ラジオボタンを使ったアプリケーションの構築方法を理解し、場面で活用してみてください。