* 基本のモジュール 利用する他のプログラムファイル(モジュール)のこと
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