PySimpleGUI

PysimpleGUI ヒント集 7/29/2024

PySimpleGUI
# 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)))] ] ----------------------------------- 

PAGE TOP