【PySimpleGUI】ラジオボタンの設定(グループ、文字の色、背景色、フォントサイズ)と選択項目の取得[Python]

  • URLをコピーしました!
目次

PySimpleGUI

前回、PySimpleGUIの文字入力フィールドの設定(フィールドサイズ、文字の色、背景色、フォントサイズ)と入力値の取得の方法を紹介しました。

今回はラジオボタンの設定(グループ、文字の色、背景色、フォントサイズ)とラジオボタンの選択項目を取得する方法を紹介します。

それでは始めていきましょう。

ラジオボタンの設置とグループ

ラジオボタンを設置するには「sg.Radio(‘ボタンのテキスト’, ‘グループ名’)」をlayoutに格納します。

ここで設定する「グループ名」は、同じグループ名からは一つのボタンしか選択できなくなる設定です。

import PySimpleGUI as sg

layout = [[sg.Radio('Radio1', 'RadioGroup1')],
         [sg.Radio('Radio2', 'RadioGroup1')],
         [sg.Radio('Radio3', 'RadioGroup2')]]

window = sg.Window('Title', layout, size=(200,100))

event, values = window.read()

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
          
window.close()

これを実行してみましょう。

実行した状態はこんな感じで、どのラジオボタンもオフになっています。

「Radio1」と「Radio3」をクリックすると、同時にオンの状態にすることができます。

しかし「Radio2」をクリックすると「Radio2」がオンになる代わりに「Radio1」がオフになります。

「Radio1」と「Radio2」は同じグループ「RadioGroup1」であるため、同時には選択できないのです。

しかし「Radio3」は「RadioGroup2」であるため、「Radio1」や「Radio2」と同時に選択することができます。

これがラジオボタンのグループです。

文字の色や背景色、フォント、フォントサイズの設定

文字の色を変えるには「text_color=’文字の色’」を、背景色を変えるには「background_color=’背景色’」をオプションに追加します。

またフォント、フォントサイズを変更するには「font=(‘フォント’, フォントサイズ)」をオプションに追加します。

import PySimpleGUI as sg

layout = [[sg.Radio('Radio1', 'RadioGroup1', text_color='Red')],
         [sg.Radio('Radio2', 'RadioGroup1', background_color='Yellow')],
         [sg.Radio('Radio3', 'RadioGroup2', font=('Arial, 20'))]]

window = sg.Window('Title', layout, size=(200,100))

event, values = window.read()

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
          
window.close()

ボタンを押したらラジオボタンの選択項目を取得

次にラジオボタンの選択項目を取得する方法を解説していきます。

実際に使う場面を考えると、ボタンを押したら値を取得し、何らかの処理をするという可能性とリアルタイムに値を取得し、処理をする可能性が考えられます。

ということで両方解説していきますが、まずは「ボタンを押したらラジオボタンの選択項目を取得」してみましょう。

while文中で「event, values = window.read()」として値を取得している場合、ラジオボタンの選択項目は「values[‘キー’]」で取得できます。

この時ボタンがオンの状態では「True」が、オフの状態では「False」が返ってきます。

import PySimpleGUI as sg

layout = [[sg.Radio('Radio1', 'RadioGroup1', key='-radio1-')],
         [sg.Radio('Radio2', 'RadioGroup1', key='-radio2-')],
        [sg.Button('Button', key='-button1-')],
        [sg.Text('Radio1', key='-text1-')],[sg.Text('Radio2', key='-text2-')]]

window = sg.Window('Title', layout, size=(200,200))

event, values = window.read()

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    elif event == '-button1-':
        window['-text1-'].update(f"Radio1: {values['-radio1-']}")
        window['-text2-'].update(f"Radio2: {values['-radio2-']}")

window.close()

実行した状態ではこんな感じ。

「Radio1」をクリックして、「Button」を押すと「Radio1: True」、「Radio2: False」が表示されます。

次に「Radio2」をクリックして、「Button」を押すと、「Radio1: False」、「Radio2: True」になります。

リアルタイムに値を取得

リアルタイムに値を取得する場合、「sg.Radio()」のオプションに「enable_events=True」を追加します。

import PySimpleGUI as sg

layout = [[sg.Radio('Radio1', 'RadioGroup1', key='-radio1-', enable_events=True)], 
          [sg.Radio('Radio2', 'RadioGroup1', key='-radio2-', enable_events=True)], 
          [sg.Text('Radio1', key='-text1-')],[sg.Text('Radio2', key='-text2-')]]

window = sg.Window('Title', layout, size=(200,100))

event, values = window.read()

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break
    window['-text1-'].update(f"Radio1: {values['-radio1-']}")
    window['-text2-'].update(f"Radio2: {values['-radio2-']}")
    
window.close()

実行した状態はこんな感じ。

「Radio1」をクリックすると「Radio1: True」、「Radio2: False」が表示されます。

次に「Radio2」をクリックすると、「Radio1: False」、「Radio2: True」になります。

次回はリストボックスを紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次