質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1380閲覧

PySimpleGUIを使った、チェックボックスの有効と無効制御について

shinmatu8888

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2023/08/26 03:34

実現したいこと

PySimpleGUIを使って、チェックボックスの有効と無効を切り替えたい。

前提

Pythonの学習をしている初心者です。
webスクレイピングをしようとして、検索条件をPySimpleGUIを使って、webに送信しようとしています。(送信の前段階の問題です。)
PySimpleGUIを学習したいため。

発生している問題

実行しても、エラーは出ませんが、チェックボックスの有効、無効を制御できません。

初歩的な質問で、申し訳ないのですが、どうすれば、'一般求人'と'障碍者の方のための求人'を選んだ場合にのみ、フルタイム、パートを選択できるようになりますか。

ちなみに、チェックボックスは、選択肢は3つで、「フルタイム」、「パート」、「フルタイムとパートの両方チェック」です。

よろしくお願いいたします。

該当のソースコード

import PySimpleGUI as sg # PySimpleGUIをインポート

#検索条件window作成
layout = [
[sg.Radio('一般求人', 'job_type', key='radio_general')],
[sg.Checkbox('フルタイム', key='checkbox_fulltime', disabled=True)],
[sg.Checkbox('パート', key='checkbox_part', disabled=True)],

[sg.Radio('新卒・既卒求人', 'job_type')], [sg.Radio('季節求人', 'job_type')], [sg.Radio('出稼ぎ求人', 'job_type')], [sg.Radio('障害のある方のための求人', 'job_type', key='radio_disability')], [sg.Checkbox('フルタイム', key='checkbox_disability_fulltime', disabled=True)], [sg.Checkbox('パート', key='checkbox_disability_part', disabled=True)], [sg.Submit(button_text='OK')],

]

window = sg.Window('job', layout)

while True:
event, values = window.read()

if event is None: break selected_job_type = None #selected_job_typeの初期化 if selected_job_type: if values['radio_general']: selected_job_type = '一般求人' window['checkbox_fulltime'].update(disabled=False) window['checkbox_part'].update(disabled=False) else: window['checkbox_fulltime'].update(disabled=True) window['checkbox_part'].update(disabled=True) if values['radio_disability']: selected_job_type = '障害のある方のための求人' window['checkbox_disability_fulltime'].update(disabled=False) window['checkbox_disability_part'].update(disabled=False) else: window['checkbox_disability_fulltime'].update(disabled=True) window['checkbox_disability_part'].update(disabled=True) if event == 'OK': break

window.close()

試したこと

PySimpleGUI(使用しているパソコンでは最新でした。)

補足情報(FW/ツールのバージョンなど)

Python3.8 (32bit)
PySimpleGUI 4.60.4
Windows7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ラジオボタンを切り替えたときにイベントが発行されるようにするには、ラジオボタンのenable_events引数をTrueにする必要があります。

python

1import PySimpleGUI as sg # PySimpleGUIをインポート 2 3# keysに指定したチェックボックスのオンオフ・無効有効を切り替える。 4def change_checkbox(root_window,keys,value,disabled): 5 for key in keys: 6 root_window[key].update(value=value,disabled=disabled) 7 8# 検索条件window作成 9layout = [ 10 [sg.Radio('一般求人', 'job_type', key='radio_general', enable_events=True)], 11 [sg.Checkbox('フルタイム', key='checkbox_fulltime', disabled=True)], 12 [sg.Checkbox('パート', key='checkbox_part', disabled=True)], 13 14 [sg.Radio('新卒・既卒求人', 'job_type', enable_events=True)], 15 [sg.Radio('季節求人', 'job_type', enable_events=True)], 16 [sg.Radio('出稼ぎ求人', 'job_type', enable_events=True)], 17 18 [sg.Radio('障害のある方のための求人', 'job_type', key='radio_disability', enable_events=True)], 19 [sg.Checkbox('フルタイム', key='checkbox_disability_fulltime', disabled=True)], 20 [sg.Checkbox('パート', key='checkbox_disability_part', disabled=True)], 21 22 [sg.Submit(button_text='OK')], 23] 24 25window = sg.Window('job', layout) 26 27selected_job_type = '' 28 29while True: 30 event, values = window.read() 31 if event is None: 32 break 33 34 if event == 'OK': 35 break 36 37 if values['radio_general']: 38 selected_job_type = '一般求人' 39 change_checkbox(window,['checkbox_fulltime','checkbox_part'],False,False) 40 else: 41 change_checkbox(window,['checkbox_fulltime','checkbox_part'],False,True) 42 43 44 if values['radio_disability']: 45 selected_job_type = '障害のある方のための求人' 46 change_checkbox(window,['checkbox_disability_fulltime','checkbox_disability_part'],False,False) 47 else: 48 change_checkbox(window,['checkbox_disability_fulltime','checkbox_disability_part'],False,True) 49 50 if not (values['radio_general'] or values['radio_disability']): 51 selected_job_type = '' 52 53 54window.close()

投稿2023/08/26 04:42

編集2023/08/26 04:46
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinmatu8888

2023/08/26 05:27

とても、親切な回答をありがとうございます。 まだまだ、分からないことがたくさんあると痛感しました。 質問しなかったら、まだ悩んでいたと思います。助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問