■freesimpleGUIのwindowに関するパラメータ
参考出典 https://qiita.com/xxpisu/items/a6b22681c62cb57371e0
参考出典 https://qiita.com/sunameri22/items/da002d628d7a28cd6e97
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●pysimpleguiの公式ページ ・・・ライセンス問題あって使わないが、文法参照に使える
https://docs.pysimplegui.com

●freesimpleguiの公式ページ ・・・ライセンスフリーなのでこちらを使う。文法はpysimplegui準拠
https://freesimplegui.readthedocs.io/en/latest/

●windowサイズの指定
・サイズ指定
  window = sg.Window("***", layout, size=(500, 500))
・サイズ可変
  window = sg.Window("***", layout, resizable=True)

●要素のサイズを変更
変更したい要素のsizeを指定:size=(文字数, 行数)

●ウインドウの位置を指定
locationパラメータにX座標, Y座標をタプルで指定
  win_location = (100, 0)
  window = sg.Window('***', layout=layout, location=win_location)

●enable_events=True
参考出典 https://zenn.dev/ku_mal/articles/ad53b874aa8e1b
  要素をクリックするとイベントが発生

●KEYの指定
出典 https://it-for-pharma.com/pysimpleguiでguiアプリを作ってみた-その3-イベント処理#toc2

・各エレメント(ButtonやTextなど)を宣言する時にkey引数に設定した文字列
・Buttonのkeyに’-OK-‘を指定すると、ボタンを押すと(‘-OK-‘, value)という形でイベントを受け取る
・画面のバツボタンを押すと(None, None)が返ってくる
・エレメントを宣言する時にkey引数を省略可能、Buttonの場合はButtonのテキスト(今回だと ‘はい’ )がkeyとして設定される
・その他のエレメント(InputTextなど)の場合、数値の0から順に昇順でkeyが設定される。
わかりにくくなるので基本的には全てのエレメントでkey引数を指定するのが推奨されている

●イベントによって動作を振り分ける方法
方法1:ifとelifで条件分岐する
方法2:handlerを用意する 実行する関数と対応するkeyをセットにして辞書として宣言
・handlerによる分岐例
import PySimpleGUI as sg
def ok_func():
    pass
def okok_func():
    pass
def submit_func():
    pass
# 使いたい関数とkeyをセットにして辞書にするだけ
handler = {
    '-OK-': ok_func,
    '-OKOK-': okok_func,
    'Submit': submit_func,
}
layout = [[sg.Text('Sample Text')],
          [sg.Button('OK', key='-OK-')],
          [sg.Button('OKOK', key='-OKOK-')],
          [sg.Submit(), sg.Cancel()]]
window = sg.Window('Sample', layout=layout)
while True:
    event, value = window.read()
    print(event, value)
    if event in [None, 'Cancel']:
        break
    function = handler[event]  # handlerからeventに応じた関数を呼び出す
    function()
window.close()

●タスクバーにアイコンを表示しない
出典 https://qiita.com/_m_a_s_a_/items/eea9f7f3e20e2c5b023a
sg.Window の引数に no_titlebar=True, grab_anywhere=True を指定
ただしウィンドウ上部の掴む場所がなくなる

●alpha_channel=0.95 半透明ウィンドウの透明率指定
●no_titlebar=True タスクバーにアイコン非表示
●grab_anywhere=True windowをドラッグ移動可能

●sg.theme
・・・後述


●sg.Text
・sg.Text('あいうえ', font=('メイリオ', 22))
・font=('フォント名', 文字サイズ) サイズはintを使用
・pad=(文字の横の空白の幅, 文字の下の空白の幅) intを使用
・key=('なまえ') このテキストをどこかで使いたいときの鍵のなまえ
・grab=True Trueのとき、この要素を掴むとウィンドウを移動させることができる
・tooltip='テキスト' 要素の上にマウスが乗ったときにテキストが表示される

レイアウトにて [sg.Text('テキスト表示域', key='TEXT']. [sg.Input(key='INPUT')]と指定し、
window['TEXT'].update(values['INPUT'])とするとINPUTされた値がテキスト表示域に表示される。
テキスト表示域をクリアするには、 window['TEXT'].update(””) とすればよい。
入力域をクリアするには、 window['INPUT'].update(””) とすればよい。

●キーボードイベント
Windowインスタンスを作成する際にreturn_keyboard_events=Trueとセットすることで、キーボードのボタン操作を検知してイベントを発生
window = sg.Window('タイトルバー', layout, return_keyboard_events=True)
発生するイベントを示す文字列は押されたキーによって変わる。

aキーを押せばaというイベント、sならsというイベントが発生

●デフォルトでイベント設定されていないwidgetを使ったイベント設定
出典 https://qiita.com/G-Rape/items/9f14b5f393bc9d88fb49
ラジオボタンの例
・要素を先に定義し、そのなかでenable_events=Trueとkeyを設定、layoutを要素のリストで生成
・ラジオボタンが押されるとイベントが発生し、イベント内容をkeyで判別、処理分岐

●sg.Button
sg.Button('あ', font='メイリオ', size=(20, 2),
          tooltip=('あ!マウスのってる~'),
          use_ttk_buttons=True, key='--a--')
ボタンの上に置く文字列、フォント、ボタンのサイズ、ボタンにカーソルが乗ったときに表示されるテキスト、
ttkボタンを使用、key

●sg.Tab および sg.TabGroup
画面内にタブを生成

●sg.Input
sg.Input('Default_text', disabled=False, key='INPUT')
入力可能なテキストボックスです。disabled=True とすることでユーザーの手入力による変更を禁止することができ、表示のみ行いたい場合に有効

●sg.Multiline
sg.Multiline('Multi \ntext', disabled=False, key='MULTILINE')
nputを複数行対応にしたものです。print メソッドにより通常の print 関数によるコンソール出力のような使い方ができます(後述)。こちらも Input 同様に disabled=True とすることで手入力を禁止できます。

●sg.Slider
sg.Slider((0, 10), 0, 1, orientation='v', disable_number_display=False, key
つまみを動かすことで値を変更可能なスライダー

●sg.Spin
sg.Spin(['松', '竹', '梅'], '梅', readonly=False, key='SPIN_1')
▲▼ボタンを押すことで、値の変更が可能

●sg.Combo
sg.Combo(['松', '竹', '梅'], '梅', readonly=False, key='COMBO')
▼ボタンを押すことで事前に設定した選択肢から値を選ぶ

●sg.Checkbox
sg.Checkbox('Checkbox', False, key='CHECKBOX')
チェックボックス。初期状態のチェック有無を True or False で指定

●sg.Radio
sg.Radio('松', 'group_1', True, key='RADIO_MATSU'), 
sg.Radio('竹', 'group_1', False, key='RADIO_TAKE'), 
sg.Radio('梅', 'group_1', False, key='RADIO_UME'), 
ラジオボタン

●sg.Menu
ウィンドウ上部のメニューバー

●sg.Table
リストを表として表示
必ず 2 次元リストで指定する。
表の中身を空リスト [[]] にしたら必ず auto_size_columns=False とする
sg.TABLE_SELECT_MODE_NONE    行を選択できない
sg.TABLE_SELECT_MODE_BROWSE    1 行のみ選択可能
sg.TABLE_SELECT_MODE_EXTENDED    複数行を選択可能

●sg.Graph
図形の描画や画像の貼り付けができるエリア
# 左下(0, 0), 右上(100, 100)
sg.Graph((100, 100), (0, 0), (100, 100), key='GRAPH_1')
# 左上(0, 0), 右下(100, 100)
sg.Graph((100, 100), (0, 100), (100, 0), key='GRAPH_2')

●sg.Column
複数の要素を一つの要素としてレイアウト

●デザインの調整: サイズと配置、色
【共通パラメータ】
・色
text_color
文字色をカラーコード( '#FF0000' など)もしくは色名( 'red' など)で指定します。
background_color
背景色をカラーコード( '#FF0000' など)もしくは色名( 'red' など)で指定します。
・サイズ・位置
size (幅、高さ) のタプルで指定します。単位は px ではなく半角文字数です。
pad 上下左右の余白を指定します。(左右, 上下) で指定し、左右, 上下 はそれぞれ (左, 右), (上, 下) に置き換えることで分けて指定ができます。
   単位は px です。
・その他
font フォントを (フォント名, サイズ) のタプルで指定します。
フォント名は 'メイリオ' など日本語名でOK、フォントサイズの単位は pt です(多分)。
サイズのみ変更したい場合は、(None, サイズ) とします。

【要素固有のパラメータ】

・Button
   button_color (・文字色, ボタン色) をタプルで指定します。

・Table

justification 各行の揃え方向を指定
 'left'(左揃え)
  'center'(中央揃え)
  'right'(右揃え)

alternating_row_color 行の縞模様。奇数行の背景が指定した色
selected_row_colors 選択中の行の色を (文字色, 背景色) で指定
header_text_color text_color同様、ヘッダー文字色を指定
header_background_color background_color同様、ヘッダー背景色を指定
header_font font同様、ヘッダーフォント指定
row_colors 特定行の色指定

 (行インデックス, 文字色, 背景色) もしくは (行インデックス, 背景色) をまとめたリストで指定
 row_colors=[(0, 'red', black), (1, 'blue')]
col_widths 列ごとの幅をリストで指定。auto_size_columns=False を指定必要
num_rows 表示する行数を指定。表示しきれない分はスクロールとなる。

・Column

scrollable 範囲外の要素をスクロールで表示
vertical_scroll_only scrollable=True のとき、縦方向のスクロールのみ許可
element_justification Column 内の要素の横方向の揃え方向
  'left'(左揃え)
  'center'(中央揃え)
  'right'(右揃え)

vertical_alignment Column 自体の縦方向の揃え方向指定

 'top'(上揃え), 'center'(中央揃え), 'bottom'(下揃え)
expand_x 横方向の余白いっぱいに要素サイズを拡張
expand_y 縦方向の余白いっぱいに要素サイズを拡張

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
■PySimpleGUIでテーマを一覧で見る方法
出典 https://nonbiri3.com/?p=2120
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●プレビューでデザインテーマの一覧が表示
import PySimpleGUI as sg
sg.theme_previewer()

●一覧ではなくリストボックスでテーマ表示
import PySimpleGUI as sg
sg.theme('Dark Brown')
layout = [[sg.Text('Theme Browser')],
          [sg.Text('Click a Theme color to see demo window')],
          [sg.Listbox(values=sg.theme_list(), size=(20, 12), key='-LIST-', enable_events=True)],
          [sg.Button('Exit')]]
window = sg.Window('Theme Browser', layout)
while True:  # Event Loop
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Exit'):
        break
    sg.theme(values['-LIST-'][0])
    sg.popup_get_text('This is {}'.format(values['-LIST-'][0]))
window.close()

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Windowsで使うフォントの日本語名と英語名
出典 https://qiita.com/Cladophlebis/items/bdcc1c79d32547a2ca26
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
日本語名    英語名
Arial    Arial
Arial Black    Arial Black
Comic Sans MS    Comic Sans MS
Consolas    Consolas
IPA Pゴシック    IPAPGothic
IPA P明朝    IPAPMincho
IPAexゴシック    IPAexGothic
IPAex明朝    IPAexMincho
IPAKielSeven    IPAKielSeven
IPAゴシック    IPAGothic
IPA明朝    IPAMincho
Meiryo UI    Meiryo UI
Microsoft Himalaya    Microsoft Himalaya
Microsoft JhengHei    Microsoft JhengHei
Microsoft JhengHei Light    Microsoft JhengHei Light
Microsoft JhengHei UI    Microsoft JhengHei UI
Microsoft JhengHei UI Light    Microsoft JhengHei UI Light
Microsoft New Tai Lue    Microsoft New Tai Lue
Microsoft PhagsPa    Microsoft PhagsPa
Microsoft Sans Serif    Microsoft Sans Serif
Microsoft Tai Le    Microsoft Tai Le
Microsoft YaHei    Microsoft YaHei
Microsoft YaHei Light    Microsoft YaHei Light
Microsoft YaHei UI    Microsoft YaHei UI
Microsoft YaHei UI Light    Microsoft YaHei UI Light
Microsoft Yi Baiti    Microsoft Yi Baiti
MS UI Gothic    MS UI Gothic
Yu Gothic UI    Yu Gothic UI
Yu Gothic UI Light    Yu Gothic UI Light
Yu Gothic UI Semibold    Yu Gothic UI Semibold
Yu Gothic UI Semilight    Yu Gothic UI Semilight
メイリオ    Meiryo
游ゴシック    Yu Gothic
游ゴシック Light    Yu Gothic Light
游ゴシック Medium    Yu Gothic Medium
游明朝    Yu Mincho
游明朝 Demibold    Yu Mincho Demibold
游明朝 Light    Yu Mincho Light
MS ゴシック    MS Gothic
MS 明朝    MS Mincho
MS Pゴシック    MS PGothic
MS P明朝    MS PMincho

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
macOSに標準搭載されている主要なフォント
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
●主な日本語フォント
ヒラギノ角ゴシック (Hiragino Kaku Gothic ProN)
ヒラギノ明朝 (Hiragino Mincho ProN)
ヒラギノ丸ゴシック (Hiragino Maru Gothic ProN)
游ゴシック体 (Yu Gothic)
游明朝体 (Yu Mincho)
小塚ゴシック (Kozuka Gothic)
小塚明朝 (Kozuka Mincho) 

●Windowsと互換性の高い欧文・共通フォント
Arial / Arial Black
Times New Roman
Helvetica / Helvetica Neue
Courier New
Georgia
Trebuchet MS 

●システムフォント
San Francisco (macOSのメニューやUIに標準使用されている書体)