PySimpleGUI ヒント集

* 基本のモジュール 利用する他のプログラムファイル(モジュール)のこと
 import PySimpleGUI as sg # PySimpleGUIは長いのでsgで表す
 import random # 乱数発声用
  import time # 時間の計算・表示
  import sys # インタプリタや実行環境に関する情報を扱う
  import glob # file path+file名をget出来る
  import os # file path + file名が出来る
  import io # 
 import webbrowser # URL呼び出しなどに使う 
  from PIL import Image # jpg,png用モジュール
   画像の読み込み img = Image.open('イワカガミ.png')
    画像の表示 img.show()
 
* layout指定 
[sg.Button(name) for name in url_link.keys() ] ボタン名にURLキーを表示
[sg.Text('test', text_color='Blue', background_color='White', font=('Arial',20))] 
[sg.Button('Button', button_color=('blue','red'))] 文字・背景色・font

* ボタン位置を決める
 # 位置 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ボタンの配置設定 

* sg.InputTextにフォーカスをセットする 次の動作をすぐ出来るようにするため
window['-INPUT-'].Widget.bind('<Enter>', lambda e: window.TKroot.focus_force())

* データファイルのパス
data_file = os.path.join("text_holder", "100_poems.txt")
* Python path
 C:\Users\n1tk\AppData\Local\Programs\Python\Python311
* PySimpleGUI.py location
 C:\Users\n1tk\AppData\Local\Programs\Python\Python311\Lib\site-packages\PySimpleGUI\PySimpleGUI.py

* MP3からWAVへ変換するにはここ
 https://convertio.co/ja/mp3-wav/

* 二つのプログラムの違いを調べる(on site) 非常に有益!
 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)

* string 特定のグループの文字列をまとめた変数
 文字列をフォーマットするクラス
 string.ascii_lowercase  # => 'abcdefghijklmnopqrstuvwxyz'
 string.ascii_uppercase # => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
 string.digits # => '0123456789'
 string.capitalize(文字列)  # 各単語の先頭を大文字にする
 string.lower(文字列)  # すべて小文字にする
 string.upper(文字列)  # すべて大文字にする
 string.join(リスト, セパレータ)  # リストを join する
 string.strip(文字列)  # 先頭と末尾の空白を削除する
 string.replace(文字列, 変更したい文字, 変更後の文字)  # 置換する
 string.capitalize(文字列)  # 各単語の先頭を大文字にする
 string.lower(文字列)  # すべて小文字にする
 string.upper(文字列)  # すべて大文字にする
 string.join(リスト, セパレータ)  # リストを join する
 string.strip(文字列)  # 先頭と末尾の空白を削除する
 string.replace(文字列, 変更したい文字, 変更後の文字)  # 置換する

* formatter = string.Formatter()
 f.format('{0}は口に{1}', '良薬', '苦し') # => '良薬は口に苦し'

* popupの使い方
  sg.popup_auto_close("5秒後に自動的に閉じるポップアップです",
  title="ポップアップ",
  auto_close_duration=5

* python exe化
 PS C:\Users\n1tk\desktop> pyinstaller 裕のURLfineder.py --onefile --noconsole 

* libraryのインストール
 PS C:\Users\n1tk> pip install openpyxl

* pipでどんなライブラリーがinstallされているか調べる
 C:\Users\n1tk> pip list

* mp3録音bit変更(128kbit-->64kbit)
 https://www.mp3smaller.com/jp/

* with open()でtxtを読み出す
 with open('四文字熟語.txt','r', encoding="utf-8_sig") as file:
 # Excel作成のtxtの場合は:encoding="utf-8_sig"が不要 5/15/2023
    for line in file:
        # print(line, end='')  # 改行なし
        print(line)  # 改行あり
    for i in list:
        words = i.split('\t') #tab区切りの場合に必要
        word_list.append(words) 	

* 音声発声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() 

* MenuBarの使い方
layout=[ [sg.MenuBar([['ファイル',['新規ファイル','ファイルを開く','ユーザー設定',['設定','拡張機能'],'閉じる']]])] ]
layout= [ [sg.MenuBar([['使い方', ['「開始/次へ」で上の句に対応する下の句が下に四個表示されます。',     '正しいと思ったボタンをクリックすると回答が表示されます。',' ','戻る']]]

* 正解、不正解を表示する
# 正解判定用関数
def atari_hazure(selected_button_text):
    if selected_button_text == window['-FLOWER_NAME-'].get():
        sg.popup("正解")
    else:
        sg.popup("不正解")
while True:
    event, values = window.read()
    if event == sg.WINDOW_CLOSED or event == '終了':
        break

    elif event in ["-BUTTON1-", "-BUTTON2-", "-BUTTON3-", "-BUTTON4-"]:
        selected_button_text = window[event].get_text()
        atari_hazure(selected_button_text)

 全codeはここ。

* リストをshuffleする
import random
list=[0,1,2,3]
random.shuffle(list) 
print(list)# -->  list=[3, 1, 0, 2]


* zipの使い方 複数のリストから要素を取り出して組み合わせる
order=[1,2,3]
mountains=["富士","大山","八ヶ岳"]
height=[3776, 1525, 1800]
for odr, mt, ht in zip(order, mountains, height):
    print(odr, mt, ht)
    """
    1 富士 3776
    2 大山 1525
    3 八ヶ岳 1800
    """

To be continued. 2/18/2024