Python
 Computer >> コンピューター >  >> プログラミング >> Python

Tkinterでラジオボタンを使って選択肢を1つだけ選ぶ方法

複数の選択肢の中からユーザーに1つだけ選ばせたい場合には、Radiobutton(ラジオボタン)ウィジェットを使用します。TkinterのRadiobuttonウィジェットは、あらかじめ用意された選択肢のグループから、必ず1つの項目のみを選択できるようにするための部品です。

ラジオボタンはTrue/Falseという2つのブール値を持っており、同じ変数(variable)を共有する複数のラジオボタンは互いに排他的に動作します。そのため、1つを選ぶと他の選択は自動的に解除されます。

ユーザーがどの選択肢を選んだのかをプログラム側で取得したい場合は、get()メソッドを使います。このメソッドは、変数に設定された現在の値を返します。戻り値は整数型なので、文字列に変換(キャスト)してからLabelウィジェットのtext属性に渡すことで、選択結果を画面上に表示できます。

サンプルコード

# 必要なライブラリをインポート
from tkinter import *
from tkinter import ttk

# tkinterフレーム(ウィンドウ)のインスタンスを作成
win = Tk()

# ウィンドウのサイズを設定
win.geometry("700x350")

# 選択されたオプションの結果を取得する関数を定義
def selection():
    selected = "あなたが選んだのは " + str(radio.get())
    label.config(text=selected)

radio = IntVar()
Label(text="好きなプログラミング言語:", font=('Aerial 11')).pack()

# 選択肢ごとにラジオボタンを定義
r1 = Radiobutton(win, text="C++", variable=radio, value=1, command=selection)
r1.pack(anchor=N)

r2 = Radiobutton(win, text="Python", variable=radio, value=2, command=selection)
r2.pack(anchor=N)

r3 = Radiobutton(win, text="Java", variable=radio, value=3, command=selection)
r3.pack(anchor=N)

# 結果を表示するラベルウィジェットを定義
label = Label(win)
label.pack()

win.mainloop()

実行結果

上記のコードを実行すると、ラベルウィジェットと、それぞれの選択肢に対応したラジオボタンが並んだウィンドウが表示されます。リストの中から任意の選択肢をクリックすると、その選択内容が下部のラベルに即座に反映されて表示されます。

このように、variableパラメータに共通のIntVarオブジェクトを指定し、valueで各ボタンに異なる値を割り当てることで、グループ内の選択肢から1つだけを選択させるUIを簡単に実装できます。

  1. Tkinterでウィジェットを非表示にする方法|pack_forget()の使い方を解説

    Tkinterアプリケーションでウィジェットを一時的に非表示にしたい場合、pack_forget()メソッドを使用します。このメソッドは、ウィンドウ上からウィジェットのマッピングを解除し、画面から見えなくするために広く使われています。pack_forget()メソッドとはpack_forget()は、pack()ジオメトリマネージャーで配置されたウィジェットを非表示にするためのメソッドです。非表示にされたウィジェットは破棄されるわけではなく、再びpack()を呼び出せば元の状態で再表示できるのが特徴です。サンプルコード以下の例では、ラベルテキストとボタンを作成し、ボタンをクリックするとラベルが

  2. Tkinterウィジェットの片側だけにパディングを追加する方法

    特定のウィジェットの片側(上下または左右のいずれか)にのみパディング(余白)を追加したいケースはよくあります。Tkinterでは、pack()メソッドとgrid()メソッドを使うことで、このような部分的なパディングを簡単に実現できます。 pack()メソッドとgrid()メソッドの違い pack()メソッドでは、「padx」(左右の余白)と「pady」(上下の余白)の値を個別に定義します。これにより、水平方向と垂直方向それぞれに異なるパディングを柔軟に設定できます。 一方、grid()メソッドの場合は、X軸方向とY軸方向のパディングを表す2つのタプル(x と y)を指定するだけで、任意の軸まわ