花の名前を覚えるアプリの作り方-1

可成り面倒なアプリのcodeをみても、なかなか簡単には真似できません。
それはcodeの一つ一つの意味が理解できていないからです。
そこで全く初めから下のようなアプリを作っていこうと思います。

# 花の名前を覚えるアプリの作り方-1 4/9/2024

# まずこのアプリ作成に必要なライブラリーを呼び込みましょう。
# #は説明用のコメントで動作には関係しません。
# codeには大事な{}、[]、()がありますが、別書き込みで説明しております(まだだったかな?)。
# codeは原則英文大文字・小文字で書きます。


import PySimpleGUI as sg # 簡単にsgと省略します
import random # 乱数発声用
from PIL import Image, ImageTk #画像作成用
import os # 必要なfileのpath探索用 (纏めて別holderにデータを入れておく)

# [ ]に囲まれた分部が、一つのwidget(部品)の正体を記述してます
# 複数のwidgetを横に並べる場合は[], [] ・・・、縦に並べる場合は[]を縦に並べます

# windowの左側に画像用枠を設定します
left_layout = [
    [sg.Image(key='-IMAGE-', size=(200, 200))]
    ]

# windowの右側に花の名前を表示するボタンを四個設定します。まだ花の名前は有りません
right_layout = [
    [sg.Text('選択肢_1:'), sg.Button('', size=(20, 2), key='-BUTTON1-')],
    [sg.Text('選択肢_2:'), sg.Button('', size=(20, 2), key='-BUTTON2-')],
    [sg.Text('選択肢_3:'), sg.Button('', size=(20, 2), key='-BUTTON3-')],
    [sg.Text('選択肢_4:'), sg.Button('', size=(20, 2), key='-BUTTON4-')]
    ]

# 次に開始用ボタン、終了ボタンを設定します
button_frame = [
    [sg.Button('開始/次へ'), sg.Button('終了')]
    ]

# 一番下にver番号など表示します(無くてもよい)
bottom_frame = [
    #[sg.Text('Tak ver 3.0_2024')],
   [sg.Text('', size=(50,1), key='-FLOWER_NAME-'), sg.Text('Tak ver 3.0_2024')]
    ]

# 最後に上で準備したlayoutとframeをまとめてLayoutとして記述します
layout = [
    [sg.Frame('この花の名前は?', left_layout, element_justification='center', size=(150, 225)),
     sg.Frame('ここから選んでください', right_layout,  size=(300, 200))],
    [sg.Column(button_frame, element_justification='center', justification='center')],
    [sg.Column(bottom_frame)]
]

#以上で表示用のwindowの設計を終わりです。 ただこのままでは、画面の表示は出来ないのでそれを書きます。
# ウィンドウの作成準備
window = sg.Window('Flower Quiz ver3.0', layout, finalize=True)

# ウィンドウを表示する
while True:
    event, values = window.read()  # これから出てくるボタンのクリック等のイベントを(key, value)で受け取る
    # window.read()はinput()のように入力待ちの状態です

# これで下の様なwindowが出来上がります。 続く。