ko_ke
@ko_ke

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PySimpleGUIでチェックボックスなどを使ったモード変更機能を実装したい

解決したいこと

プログラミングそのものを学びだしたばかりの若輩です。
PysimpleGUIを使ってテキストファイル等に対する操作を行うアプリを作っています。
その中でチェックボックスなどを用いた、読み込みリストの変更や出力などの簡易的な「モード変更」を行いたいと考えています。
具体的には
通常モード:何もチェックされていない状態でボタンが押されたら「リストNORMAL」から読み込んで計算
モードA:チェックボックスAがチェックされている状態でボタンが押されたら「リストA」から読み込んで計算
・・・という具合にです。

しかし、モード1は実行できたものの、例えば↓

if event =='button' and 'check_A':

といったように複数のkeyを条件にして実行しようとしたものの、ボタンのみを押した時と挙動が変わりませんでした。
こういったモード変更のようなやり方をどうかご教授ください。

import os
import random
import PySimpleGUI


layout = [sg.Button('BUTTON',key='button')],[sg.Checkbox('A', key='check_A'),sg.Checkbox('B', key='check_B')]

window = sg.Window('TEST', layout,size=(300, 100))

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

    if event == 'button':
        print('normal')

    elif event == 'check_A' and 'button' :
        print('モードA')

    elif event == 'check_B' and 'button' :
        print('モードB')

#仮として、'モードA'や'モードB'が表示できるようになりたい。

window.close()
1

1Answer

こんにちは!
初めて PySimpleGUI を使ってみましたが、とても簡単に実装できてすごく便利ですね!
check_A とかの判定は event で渡されるのではなく、values としてブール型で渡されてくるようです!
なので、値をブール値で条件分岐させるときちんと判定が出来ました!
以下修正したコードです!

import os
import random
import PySimpleGUI as sg


layout = [sg.Button('BUTTON',key='button')],[sg.Checkbox('A', key='check_A'),sg.Checkbox('B', key='check_B')]

window = sg.Window('TEST', layout,size=(300, 100))

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

    print(values)  # {'check_A': True, 'check_B': False}  ←-- A を押したときの POST 値

    if event == 'button':
        print('normal')

    if event == 'button' and values['check_A']:
        print('モードA')

    if event == 'button' and values['check_B']:
        print('モードB')

#仮として、'モードA'や'モードB'が表示できるようになりたい。

window.close()
1Like

Comments

  1. @ko_ke

    Questioner

    さっそくコピペして触ってみましたが、やりたかったのはまさにコレです!
    values値などの関係をまだ把握し切れていないなりに簡単で役立ちそうな事から
    調べてチャレンジしようとしていたのですが、こういう所にも関わってくるのなら
    これが調べるとっかかりになりそうでよかったです。

    それとわざわざPysimpleGUIに触って解答してもらって非常に助かりました。
    そういう意味でもありがとうございました。

Your answer might help someone💌