2021年11月10日水曜日

PySimpleGUIでメニュー要素を表示し、選択されたメニュー項目の処理を行う

PySimpleGUIでメニュー要素を表示し、選択されたメニュー項目の処理を行うには、以下のサンプルプログラムのようにメニュー定義・イベント処理を行います。
メニュー定義で、「&」と続く英文字がALT+英文字のショートカットになります。また、先頭に「!」が付くと無効化されたメニュー項目になります。メニュー項目の後ろに「::キー値」をつけると、メニューにはその部分は表示されないが、イベントには付加された状態で渡されます。

サンプル実行手順

以下のファイルを保存して、実行します。メニューを選択すると、下に配置したテキストが更新されます。

menu_events.py
import PySimpleGUI as sg

sg.theme('SystemDefault')
menu_def = [
    ['&Sample', ['Sample &1::sample1key', '!Sample &2::sample2key']],
    ['&Help', ['&About...::aboutkey']]
]
mytext = sg.Text('', font=('Noto Serif CJK JP',30))
layout = [
    [sg.Menu(menu_def)],
    [mytext]
]

window = sg.Window('メニューサンプル', layout, size=(200,100))
# イベントループ
while True:
    event, values = window.read()
    print(event,values)
    if event is not None and event.endswith('sample1key'):
        mytext.update(value='Sample1')
    if event is not None and event.endswith('sample2key'):
        mytext.update(value='Sample2')
    if event is not None and event.endswith('aboutkey'):
        mytext.update(value='About')
    if event == sg.WIN_CLOSED:
        break

window.close()

・実行コマンド
python menu_events.py

〇実行結果

関連情報

PySimpleGUIでメニュー要素のメニュー項目の文字色・背景色を設定する

PySimpleGUIでメニュー要素のメニュー項目のフォントを設定する

・PySimpleGUIに関する他の記事はこちらを参照してください。

0 件のコメント:

コメントを投稿