簡単なことだけど、すぐ忘れるのでここに書いております。
#layoutに使用する主なエレメント
sg.Text:テキストの表示
sg.Input:一行のテキスト入力欄
sg.Multiline:複数行のテキスト入出力
sg.Listbox:指定された値が一覧表示され、その中から選択
sg.Radio:同じgroup_idで指定された複数の選択肢から1つを選択
sg.Checkbox:はい/いいえの二者択一
sg.Spin:矢印を使用して選択するリストボックス
sg.Button:何らかのイベントを実行
#モジュールやパッケージをimportする
import PySimpleGUI as sg
import random
from PIL import Image, ImageTK
import webbrowser
import os, ir, glob etc
#ボタンの背景色と文字色、順序を間違えないこと
button_color=('白文字', '背景色')
#jpg画像を変数に取り込む
image_holder = 'flower_holder'
image_files = glob.glob(f'{image_folder}/*.jpg)
#jpg画像をランダムに選択・表示する
random_image = random.choice(image_filies)
image = image.open(random_image)
image.thumbnail((200,300))(image)
# ランダムな画像ファイルを選択
random_image = random.choice(image_files)
# 画像を表示(from PIL import Image, ImageTK必要)
image = Image.open(random_image)
image.thumbnail((200, 300)) # サイズを調整
photo_img = ImageTk.PhotoImage(image)
window['-IMAGE-'].update(data=photo_img)
# ボタンなどをセンターに表示する
#'center'が無いと「開始」「終了」が左端に来る
.Column(button_frame, element_justification='center', justification='center')],
# Menuの設定法 window画像はここを参照ください。
menu=[
['使い方',['「開始/次へ」で花の写真が表示されますので、',
'四つの選択肢から正解を選んでください。', ' ','閉じる']]]
menu=[
['使い方',['ボタン「次へ」を押下したままにすると、問題が表示されます。 マウスをリリース(離す)すると答え、ピンイン、備考が表示されます', ' ','閉じる']]]
layout = [
[sg.Menu(menu)],
[sg.Frame('この花の名前は?', left_frame, element_justification='center', size=(200, 300)),
sg.Frame('ここから選んでください', right_frame, element_justification='center', size=(300, 200))],
[sg.Column(button_frame, element_justification='center', justification='center')],
# text fileの読み込み
with open("中国語基礎1_29_2024.txt", "r", encoding="utf-8") as f:
word_list = [line.split('\t') for line in f.readlines()]
# 一般的な読込code 上の読み込み方法と比較すると煩雑である。
with open("中国語基礎1_25_2024.txt", "r", encoding="utf-8") as f:
list = f.readlines()
word_list = []
for i in list:
words = i.split('\t') #tab区分file
word_list.append(words) # print("15 :", word_list)
# マウスのpress/releaseで違う動作をさせる
# make the window
window = sg.Window('初歩の中国語', layout,element_justification='c', finalize=True)
window["-ok-"].bind("<ButtonRelease>", "-release-", propagate=False)
window["-ok-"].bind("<ButtonPress>", "-press-", propagate=False)
while True:
event, values = window.read()
if event in (None, 'Quit'):
break
if event == '-ok--press-':
new_index = random.randint(0, len(word_list)-1)
window['-question-']. Update(" "+word_list[new_index][0])
window['-meaning-']. Update(" ")
window['-pinyin-'].Update(" ")
window['-ref-']. Update(" ")
#window['-ok-'].Update('Show_meaning')
elif event == '-ok--release-':
window['-meaning-']. Update(" "+word_list[new_index][1])
window['-pinyin-'].Update(" "+word_list[new_index][2])
window['-ref-']. Update(word_list[new_index][3])
#window['-ok-'].Update('Next')
---- end ----