# Python本家のホームページ ecookbook
https://docs.pysimplegui.com/en/latest/cookbook/ecookbook/getting_started/the-basic-pysimplegui-program/
# RGBカラーを画面で確かめる
https://www.lab-nemoto.jp/www/leaflet_edu/else/ColorMaker.html
# PySimpleGUIの動作不良発生の場合
pip uninstall PySimpleGUI : まず不良をuninstallする
pip install PySimpleGUI==4.19.0 : 必要なverをinstallする. 注意:PySimpleGUI 5はpro用です。
# while Trueでエラーが出てもexit出来るようにする
while True:
try:
event, values = window.read()
if event in (None, '-quit-'):
break
if event == '-file-':
# your existing code for handling file selection
except Exception as e:
sg.popup_error(f"An error occurred: {e}")
break
# ボタンの動的作成(layoutへ作成する)
[sg.Button(name) for name in url_link.keys() ],
layout = [[sg.Text('test', text_color='Blue', background_color='White', font=('Arial',20))]]
# 当たり外れをpopup表示
tenplate参照
# sg.InputTextにフォーカスをセットする
window['-INPUT-'].Widget.bind('<Enter>', lambda e: window.TKroot.focus_force())
# ウィンドウのテーマ、下記のcolorが使用できます。
sg.theme('LightBrown2')
valid values are ['Black', 'BlueMono', 'BluePurple', 'BrightColors', 'BrownBlue', 'Dark', 'Dark2',
'DarkAmber', 'DarkBlack', 'DarkBlack1', 'DarkBlue', 'DarkBlue1', 'DarkBlue10', 'DarkBlue11',
'DarkBlue12', 'DarkBlue13', 'DarkBlue14', 'DarkBlue15', 'DarkBlue16', 'DarkBlue17', 'DarkBlue2',
'DarkBlue3', 'DarkBlue4', 'DarkBlue5', 'DarkBlue6', 'DarkBlue7', 'DarkBlue8', 'DarkBlue9',
'DarkBrown', 'DarkBrown1', 'DarkBrown2', 'DarkBrown3', 'DarkBrown4', 'DarkBrown5',
'DarkBrown6', 'DarkGreen', 'DarkGreen1', 'DarkGreen2', 'DarkGreen3', 'DarkGreen4',
'DarkGreen5', 'DarkGreen6', 'DarkGrey', 'DarkGrey1', 'DarkGrey2', 'DarkGrey3', 'DarkGrey4',
'DarkGrey5', 'DarkGrey6', 'DarkGrey7', 'DarkPurple', 'DarkPurple1', 'DarkPurple2', 'DarkPurple3',
'DarkPurple4', 'DarkPurple5', 'DarkPurple6', 'DarkRed', 'DarkRed1', 'DarkRed2', 'DarkTanBlue',
'DarkTeal', 'DarkTeal1', 'DarkTeal10', 'DarkTeal11', 'DarkTeal12', 'DarkTeal2', 'DarkTeal3',
'DarkTeal4', 'DarkTeal5', 'DarkTeal6', 'DarkTeal7', 'DarkTeal8', 'DarkTeal9', 'Default', 'Default1',
'DefaultNoMoreNagging', 'Green', 'GreenMono', 'GreenTan', 'HotDogStand', 'Kayak', 'LightBlue',
'LightBlue1', 'LightBlue2', 'LightBlue3', 'LightBlue4', 'LightBlue5', 'LightBlue6', 'LightBlue7', 'LightBrown',
'LightBrown1', 'LightBrown10', 'LightBrown11', 'LightBrown12', 'LightBrown13', 'LightBrown2',
'LightBrown3', 'LightBrown4', 'LightBrown5', 'LightBrown6', 'LightBrown7', 'LightBrown8', 'LightBrown9',
'LightGray1', 'LightGreen', 'LightGreen1', 'LightGreen10', 'LightGreen2', 'LightGreen3', 'LightGreen4',
'LightGreen5', 'LightGreen6', 'LightGreen7', 'LightGreen8', 'LightGreen9', 'LightGrey', 'LightGrey1',
'LightGrey2', 'LightGrey3', 'LightGrey4', 'LightGrey5', 'LightGrey6', 'LightPurple', 'LightTeal', 'LightYellow',
'Material1', 'Material2', 'NeutralBlue', 'Purple', 'Reddit', 'Reds', 'SandyBeach', 'SystemDefault',
'SystemDefault1', 'SystemDefaultForReal', 'Tan', 'TanBlue', 'TealMono', 'Topanga']
# データファイルのパス
data_file = os.path.join("text_holder", "100_poems.txt")
---> text_holder/100_poems.txt
# 最新バージョンにアップグレードする
pip install --upgrade PySimpleGUI
# from PIL import Image, ImageTkの場合は
pip install pillow とすること
# Pythonのpathを調べる
C:\Users\xxxx\AppData\Local\Programs\Python\Python311
# 二つのプログラムの違いを調べる
https://difff.jp/
# listの[[]]を外す方法
・text_list = [['DEYUW AHDJI']]
text = text_list[0][0].strip() #[0][0]のこと
print(text)=DEYUW AHDJI
# 辞書[]から要素を取り出す
・if event == '-file-':
sg.popup(f"選んだfileは、{values['-file-'][0]} ですね。")
selected_file = values['-file-'][0]
print(selected_file)
# 文字列の分割-1.py 7/27/2024
s_blank = 'one two three\nfour\tfive' #\nは段落、\tはtabで分割
print(s_blank) # one two three # four five
print(s_blank.split()) # ['one', 'two', 'three', 'four', 'five']
print(type(s_blank.split()))
# string 特定のグループの文字列をまとめた変数
文字列をフォーマットするクラス
string.ascii_lowercase
---> 'abcdefghijklmnopqrstuvwxyz'
# 英文文字列をすべて大文字にする
string.ascii_uppercase
=> 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# 日本語全角文字列をすべて大文字にする
import jaconv
text = "アイウエオ12345ABC"
converted_text = jaconv.z2h(text, kana=True, digit=True, ascii=True)
print(converted_text) --->出力: アイウエオ12345ABC
# ひらがなをカタカナにする
import jaconv
text = "こんにちは"
converted_text = jaconv.hira2kata(text)
print(converted_text) ---># 出力: コンニチハ
# 文字のサイズ、色を決める
layout = [[sg.Text('test', text_color='Blue', background_color='White', font=('Arial',20))]]
# 文章の文字をアプリ上で追加する
formatter = string.Formatter()
f.format('{0}は口に{1}', '良薬', '苦し') ---> '良薬は口に苦し'
# ボタン位置を決める
* 位置 left=100、right=10、top=50、bottom=50
[sg.Button('Button', pad=((left,right),(top,bottom)) )]
[sg.Button('Button', pad=(left,right))]<--windowの横が広がる。 not so good.
[sg.Button('End', pad=((150, 0),(50,0)))] # pad:Endボタンの配置設定 OK
# ボタン色
[sg.Button('Button', button_color=('blue','red'))]
# string.capitalize(文字列) # 各単語の先頭を大文字にする
# string.lower(文字列) # すべて小文字にする
# string.upper(文字列) # すべて大文字にする
# string.join(リスト, セパレータ) # リストを join する
#string.strip(文字列) # 先頭と末尾の空白を削除する
# string.replace(文字列, 変更したい文字, 変更後の文字) # 置換する
# popupの使い方
・sg.popup_auto_close("5秒後に自動的に閉じるポップアップです",
title="ポップアップ",
auto_close_duration=5
# verticalに空白を挿入する
layout = [
[sg.Text('Top')],
[sg.VerticalSeparator()],
[sg.VerticalSeparator()],
[sg.VerticalSeparator()],
[sg.Text('Middle')],
[sg.VerticalSeparator()],
[sg.Text('Bottom')]
]
# pythonのexeファイルを作る(exe化), 写真などは別holderにして、exeに添付すること。
PS C:\Users\XXXX\desktop> pyinstaller RLfineder.py --onefile --noconsole
・ライブラリーもexeの中に網羅されるので、非常にサイズが大きくなる
・data fileは別途exe fileとしたほうが良い
# pipでどんなライブラリーがinstallされているか調べる
C:\Users\xxxx> pip list
# mp3録音bitを変更する変更(128kbit-->64kbit)
https://www.mp3smaller.com/jp/
# with open()でfileを読み込む
➀
with open("All_208.txt", "r") as f: #,encoding="utf-8") as f:
list = f.readlines()
word_list = []
for i in list:
words = i.split('\t') #tab区分file、文字列中の空白、カンマ、ピリオドなどは混入OK
word_list.append(words)
#print("27 :", word_list) OK
②
with open("All_208.txt", "r") as f:
word_list = [line.split('\t') for line in f]
# 音声発声codeを関数化する # Pygameを初期化する
pygame.init()
pygame.mixer.init()
def correct_sound(mp3):
if mp3 == 'atari.mp3':
mp3_file = 'atari.mp3'
#sg.popup('当たり')
else:
mp3_file = 'hazure.mp3'
#sg.popup('外れ')
music_mp3 = pygame.mixer.Sound(mp3_file)
music_mp3.play()
# line(txtファイルの)分割(sep)方法
text_file = line.rstrip("\n").rsplit("\t") #rstrip("\n")は段落を取り除く,rsplit("\t")はtabで分割する。 tabの代わりにspaceでも句読点でもOK
# MenuBarの作り方
layout=[ [sg.MenuBar([['ファイル',['新規ファイル','ファイルを開く','ユーザー設定',['設定','拡張機能'],'閉じる']]])] ]
layout= [ [sg.MenuBar([['使い方', ['「開始/次へ」で上の句に対応する下の句が下に四個表示されます。', '正しいと思ったボタンをクリックすると回答が表示されます。',' ','戻る']]]
# 文字列をセンターに配置する
layout=[
[sg.xxxx(' ', element_justification="center", justification="center")]
# ボタンを必要な場所に追加する
[sg.Button('Next', key='next'), sg.Button('End', key='end')],
[sg.Text("Tak ver2.0_3_2024 ", size=(15,1), pad=((200,10),(0,0)))]
]
-----------------------------------