💊

PySImpleGUIを深く理解する(後編)

2022/01/05に公開

PySimpleGUI布教活動

前回前々回と、PySimpleGUIについて徹底的に解説してきました。
※まだ見たことない方はこちらの記事をどうぞ!
https://zenn.dev/monaka37/articles/583c1fa0fa913b
https://zenn.dev/monaka37/articles/6e55b4e5be8fa7

YouTube解説動画(後編)

前回の投稿の続きです。
https://youtu.be/17kbkLoDhZc

具体的には、

  • メニュー
  • タブ、タブグループ
  • フレーム、セパレータ
  • ポップアップ

について解説しています。
それぞれの要素の持つプロパティ(引数)を公式ドキュメントに準拠してすべて説明していますので、見ないと損です。一旦見てみましょう!

解説用スクリプト公開

動画内で使用したスクリプトも載せておくので、実際に自分のPCでも動かしてみてください!

タブ、タブグループ

tab_tabgroup.py
import PySimpleGUI as sg

# タブレイアウト
tab1_layout =  [[sg.T('タブ1内容\nこちらはサンプルです')]]

tab2_layout = [
               [sg.T('タブ2内容:テキストを入力してください')],
               [sg.In()],
               [sg.B("OK")],
              ]    

# レイアウト
layout = [
    [sg.T("====ウィジェット解説====", size=(30,1)),sg.B("確認ボタン")],
    [sg.T("event :"),sg.T("eventを表示", size=(30, 1), k="-EVENT-")], 
    [sg.T("values:"), sg.T("valuesを表示", size=(30, 1), k="-VALUES-")], 
    [sg.TabGroup([[sg.Tab('タブ1', tab1_layout), sg.Tab('タブ2', tab2_layout)]],tab_location="topleft")],
    [sg.B("タブの下")],
    ]

# ウインドウ生成
window = sg.Window("タブ タブグループ", layout, font=("meiryo", 20),resizable=True,
keep_on_top=True, grab_anywhere=True)

# イベント処理記述
while True:
    event, values = window.read()
    window["-EVENT-"].update(str(event))
    window["-VALUES-"].update(str(values))
    if event == None:
        break
window.close()

フレーム、セパレータ

frame_HVseparator.py
import PySimpleGUI as sg

# タブレイアウト
frame1_layout = [
               [sg.T("テキスト1")],
               [sg.In(s=(10,1))],
               [sg.B("ボタン1")],
              ]    

frame2_layout = [
               [sg.T("テキスト2")],
               [sg.In(s=(10,1))],
               [sg.B("ボタン2")],
              ]    

# レイアウト
layout = [
    [sg.T("====ウィジェット解説====", size=(30,1)),sg.B("確認ボタン")],
    [sg.T("event :"),sg.T("eventを表示", size=(30, 1), k="-EVENT-")], 
    [sg.T("values:"), sg.T("valuesを表示", size=(30, 1), k="-VALUES-")], 
    [sg.HorizontalSeparator()],
    [sg.Frame("フレーム1", frame1_layout),sg.VerticalSeparator() , sg.Frame("フレーム2", frame2_layout, title_location=sg.TITLE_LOCATION_BOTTOM)],
    ]

# ウインドウ生成
window = sg.Window("フレーム Hセパレータ Vセパレータ", layout, font=("meiryo", 20),resizable=True,
keep_on_top=True, grab_anywhere=True)

# イベント処理記述
while True:
    event, values = window.read()
    window["-EVENT-"].update(str(event))
    window["-VALUES-"].update(str(values))
    if event == None:
        break
window.close()

Discussion